IOS

iOS开发教程之WKWebView与JS的交互

2019-07-01
前言 iOS8以后,Apple公司推出了WKWebView,对比之前的UIWebView不论是处理速度还是内存性能,都有了大幅度的提升! 那么下面我就分享一下WKWebView与JS的交互. 首先使用WKWebView.你需要导入WebKit #import 然后初始化一个WKWebView,设置代理,并且执行代理的方法.在网页加载成功的时候,我们会调用一些JS代码对网页进行设置. WKWebView的代理一共有三个:WKUIDelegate,WKNavigationDelegate,WKScr

iOS自定义转场动画的几种情况

2019-06-27
前言 在开发中,无论我们使用 Push 还是 Present 推出新的 ViewController 时,系统为了提高用户体验都会为我们默认加上一些过渡动画.但是,系统默认的动画总是不能满足大家各种各样的需求的,所以系统也为我们提供了在不同场景下自定义过渡动画以及通过手势控制过渡进度的实现方案. 这篇文章记录了自定义转场动画中的几种情况: 模态跳转(Present) 导航控制器跳转(Push) UITabbarController 三方框架--Lottie 效果图 预备 首先,我们现在介绍几个在

解决SDK注入权限验证安卓正常,IOS出现config fail的方法

2019-06-23
实测有效 解决微信游览器和企业微信游览器JSSDK注入权限验证 安卓正常,IOS出现config fail 一开始我们想到的是可能微信这边的Bug,但细想一下应该不是.因为可能涉及到了IOS的底层原理的问题,可能是不受微信所控.(有问题欢迎拍砖) 出现问题得解决问题啊,不能把问题晾在那边不管,这是程序员的尊严! 我这个是SPA应用,所以拿其中一个vue项目来做探讨,其他SPA应用同理 首先我们想到在安卓中生效,在IOS中不生效是什么原因? 我们把所有设置都检查了一遍,最终发现是当前路由locat

Objective-C中block循环引用问题详解

2019-06-14
目标:block执行过程中,self不会释放:执行完可以释放. 最初 block中直接使用self会强引用. self.myBlock = ^() { [self doSomething]; }; 或者使用了对象的属性 self.myBlock = ^() { NSString *str = _str; NSString *str2 = self.str; }; 在这样的情况下,self强引用block,block也持有该对象,导致循环引用. 要注意的是,只有在self强引用block的时候才会

iOS中gif图的显示方法示例

2019-06-13
一.前言 iOS开发中,大部分时候我们显示一张静态图就可以了,但是有的时候为了UI表现更生动,我就有可能需要展示gif图来达到效果了. 网上找了一下,显示gif图的框架找到了两个. SDWebImage YYImage 二.显示本地gif图 SDWebImage和YYImage的显示本地图片代码. //load loacle gif image - (void)loadLocaleGifImage{ //sdwebimage [self labelFactoryWithFrame:CGRectM

使用objc runtime实现iOS闭环的懒加载功能

2019-06-13
使用objc runtime实现懒加载 地址:AutoPropertyCocoa 懒加载形式如下 - (id)lazyloadProperty{ if(_lazyloadProperty == nil){ _lazyloadProperty = [XClass ...]; } return _lazyloadProperty; } 一般使用宏定义可以轻松完成.但是没有一致性,移植差. 利用objc runtime的动态性实现懒加载可以实现即可增加又可删除功能,也可以避免污染类型.该三方弥补了目前

iOS去除Webview键盘顶部工具栏的方法

2019-06-04
前言 在默认情况下,iOS 使用 Webview 打开的网页,在进行表单输入时,弹出的键盘顶部会多出一个工具栏. 左边有两个上下按钮,右边有一个Done/完成按钮.这是用来切换输入框的,就像 PC 上按Tab键可以切换输入框一样. 为了让 App 中嵌入的 H5 更接近 Native,咱们可以去掉它. UIWebView UIWebView,可以使用[self hideKeyboardShortcutBar:self.webView]去掉工具栏. - (void) hideKeyboardSho

iOS UIPickerView的简单封装示例

2019-06-01
前言 在iOS实际项目中,经常会出现界面中多个地方需要使用UIPickerView,如果在每个需要用到的地方都创建一个UIPickerView不仅更耗性能,而且还会让你的代码变得更加杂乱.冗余,因此我在这里向大家介绍一下我对UIPickerView的一些简单封装. 所需属性 /** pickerView*/ @property (nonatomic, strong) UIPickerView pickerView; /* pickerView背景*/ @property (nonatomic,

iOS用AutoLayout实现分页滚动功能

2019-05-31
滚动视图分页 UIScrollView的pagingEnabled属性用于控制是否按分页进行滚动.在一些应用中会应用到这一个特性,最典型的就是手机桌面的应用图标列表.这些界面中往往每一页功能都比较独立,系统也提供了UIPageViewController来实现这种分页滚动的功能. 实现分页滚动的UI实现一般是最外层一个UIScrollView.然后UIScrollView里面是一个总体的容器视图containerView.容器视图添加N个页视图,对于水平分页滚动来说容器视图的高度和滚动视图一样,

iOS开发Quick Actions创建桌面Icon快捷方式

2019-05-30
个言 很久没发随笔了,有一年多了吧.期间也曾想继续去写随笔,但是因为各种原因而耽搁了.最近又想了一下,还是有很多东西想要写,想要分享,想要记录下来的东西.之后我也会不断写随笔,但不止于 iOS 的方向,也想去体验一下新东西.在此不多说,我们开始阅读正文吧. 简介 在支持 3D Touch 的设备上,Quick Actions 可以让用户更快,更少的操作步骤去完成他们最常做的事情,其中这么多操作可以通过主屏幕直接完成.比如用力地长按微信图标,会弹出诸如"扫一扫"和"我的二维码&

模仿iOS版微信的滑动View效果

2019-05-27
前言 最近经常交替使用Android和iOS手机.对于两个系统,从我们常用的列表来看,Android一般的列表菜单是通过长按出来的,而iOS是通过滑动出现的.比如我们常用的微信,对于Android版本,长按某个聊天好友,会弹出 标为未读,置顶聊天,删除聊天 选项:对于iOS的版本,右滑,会显示出 标为未读,删除 选项 ---------------------------------我是分割线--------------------------------- 1. 滑动View 1.1 内容展示

iOS bounds学习笔记以及仿写UIScrollView部分功能详解

2019-05-22
经常看到这种说法,frame是基于父控件的,bounds是基于自身坐标的.然而,这个自身坐标是什么?bounds这个属性存在的意义是什么呢?bounds的x和y值真的永远是0吗? 经过查阅资料,我看到这样一种说法:一个控件,拥有其展示部分和内容部分.其展示部分是有限大的,固定坐标固定大小,而其内容部分是无限大的.就像一个电视机以及其播放的电影(这个比喻不太恰当,是我强行比喻的),电视机用于放映电影的屏幕(控件的展示部分)是固定位置固定大小的,然而电影的世界(控件的内容部分)是无限大的,我们只能展

iOS滑动全屏实现返回功能

2019-05-20
本文实例为大家分享了iOS滑动全屏实现返回功能的具体代码,供大家参考,具体内容如下 系统自带的滑动返回功能,只能滑动边缘返回,而我们希望通过滑动全屏实现返回功能. 定义BaseNavigationController来取代UINavigationController // BaseNavigationController.h #import <UIKit/UIKit.h> @interface BaseNavigationController : UINavigationController

iOS中WKWebView仿微信加载进度条

2019-05-20
本文实例为大家分享了WKWebView仿微信加载进度条的具体代码,供大家参考,具体内容如下 WKWebView添加了estimatedProgress属性(double类型),我们可以利用该属性来设置UIProgressView github代码仓库上存放的Demo 为页面添加UIProgressView属性 @property (nonatomic, strong) WKWebView *mywebView; @property (nonatomic, strong) UIProgressVi

iOS使用UICollectionView实现横向滚动照片效果

2019-05-19
本文实例为大家分享了iOS使用UICollectionView实现横向滚动展示照片的具体代码,供大家参考,具体内容如下 这是Demo链接 效果图 思路 1. 界面搭建 界面的搭建十分简单,采用UICollectionView和自定义cell进行搭建即可. // ViewController.m // 下面使用到的宏和全局变量 #define ScreenW [UIScreen mainScreen].bounds.size.width #define ScreenH [UIScreen main

ios12中遇到的带input弹窗的错位问题的解决方法

2019-05-17
问题描述: 使用fixed定位的弹窗,在ios12的系统里,软键盘调起后,页面整体上移,当软键盘消失时,视觉上页面已经回到原始位置,但其实弹窗的焦点位置仍在软键盘调起时的位置. 解决办法: 这也是参考某位大佬的解决办法 document.body.addEventListener('focusin', () => { // 软键盘弹出的事件处理 this.isReset = false }) document.body.addEventListener('focusout', () => {

iOS系统的底层通知框架库示例详解

2019-05-10
观察者模式 观察者模式是一种用于解耦一系列需要相互协作的类之间进行通信的对象行为模式.它定义了对象之间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.观察者模式的实现一般分为两个步骤:消费者注册通知消息监听器.生产者发送通知消息. iOS系统提供了多种对观察者模式的实现:在Cocoa Touch层通过NSNotification类和NSNotificationCenter类来实现通知消息的注册处理和发送,而在CoreFoundation层则提供了CFNotif

在iOS中实现谷歌灭霸彩蛋的完整示例

2019-05-03
前言 最近上映的复仇者联盟4据说没有片尾彩蛋,不过谷歌帮我们做了.只要在谷歌搜索灭霸,在结果的右侧点击无限手套,你将化身为灭霸,其中一半的搜索结果会化为灰烬消失...那么这么酷的动画在iOS中可以实现吗?答案是肯定的.整个动画主要包含以下几部分:响指动画.沙化消失以及背景音效和复原动画,让我们分别来看看如何实现. 图1 左为沙化动画,右为复原动画 响指动画 Google的方法是利用了48帧合成的一张Sprite图进行动画的: 图2 响指Sprite图片 原始图片中48幅全部排成一行,这里为了显示

iOS自定义时间滚动选择控件

2019-04-28
本文实例为大家分享了iOS自定义时间滚动选择控件的具体代码,供大家参考,具体内容如下 1.先上自定义的控件: /** * 滚轮选择器 * author LH * data 2016/8/20 17:26 */ public class WheelView extends View { public static final String TAG = "WheelView"; /** * 自动回滚到中间的速度 */ public static final float SPEED = 2;

iOS自定义日期和数据源选择控件

2019-04-28
需求 App开发中经常会有日期选择(如生日.睡眠定时等)或者省市区选择等此类功能,通常UI中不会单独使用UI中的控件,而是在UIPickerView的基础上增加一个取消和确定按钮 特点 1.支持常见的选择型的数据格式 该控件集成了 yyyy-MM-dd.yyyy-MM.hh mm.省市级联.省市区级联.自定义数据源(2列).自定义数据源(3列)等多种格式 2.即支持UITextField又支持事件触发机制 3.即支持XIB也支持纯代码 效果图 GitHub:XXPickerView 集成 首先将