IBInspectable
以下是我发现的适用于IBInspectable的类型:
下面这些数据都对IBInspectable有效:
Int
CGFloat
Double
String
Bool
CGPoint
CGSize
CGRect
UIColor
UIImage
手动设置系统字体大小,App里面的字体能跟随发生变化,并有最大最小字体限制。
借助runtime,在app启动的时候交换方法实现。
特点:需要重启app才能生效。无侵入,只需要添加一个UIFont分类,并在appdelegate里面调用交换方法。对整体项目改动小。
① App内设置字体大小,选择字体后,发送通知。切回到你需要改变的界面上时,在收到通知的方法里改变当前界面字体。(微信)
② 调整系统字体大小,切换到App内,字体大小自动更改,用DynamicType实现(QQ)
特点:app内实时刷新。可以整体替换,第三方重新pod,但项目整体改动较多
③ 保存字体大小到本地,所有用到字体的地方实时获取或刷新
采用:app内实时刷新
2.1 整体全部手动替换,搜索所有的systemFont,改为xx_systemFont,第三方重新pod,但项目整体改动较多,有风险
2.2 几个核心页面做下适配,其他不管
采用:6个核心页面做下适配
添加一个UIFont分类,更改systemFont类方法的实现
1.注册一个字体改变的通知。选择字体后,发送通知。切回到你需要改变的界面上时,在收到通知的方法里改变当前界面字体。(微信)
2.用DynamicType实现(QQ)
效果:调整系统字体大小,切换到App内,字体大小自动更改
缺点:字体大小只能是给定的10种类型之一
3.保存字体大小到本地,所有用到字体的地方实时获取或刷新
全局替换系统字体方法,会有个问题:很多地方view大小没做适配。采用适配4、5个核心页面的方案。
实现方法:给UIFont分类添加新的方法,需要适配的地方把systemFont改为xx_systemFont即可
特点:哪里需要适配就改哪里,灵活度和自由度自己控制
1、Method 'initialize()' defines Objective C class method 'initialize', which is not permitted by Swift
Swift4开始废弃load方法和initital方法了,写个类方法交换实现,然后直接在appdelegate里面调用类方法即可。UIButton可行,但是UIFont不可行(UIFont是类方法,写错了就不生效)。
2、UIFont的systemFont设置了没生效,因为systemFont是类方法,写错了
3、百度到的一些方案遇到些问题UILabel的font方法获取不到,willMove(toSuperview:)会出现UIButtonLabel的情况,属性字符串的兼容情况等。
iOS10的一些玩意儿:Dynamic Type
Swift黑魔法 - Runtime
APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事;在iOS 10下 ,首次进入应用时,会有询问是否允许网络连接权限的的d窗,为更好进行用户交互,需要在打开应用时获取应用禁用网络权限状态(状态分为:未知、限制网络、未限制网络),客户端根据不同的权限状态定制相应的人机交互。
那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:
1.在用户打开APP时就向用户请求权限;
2.告知用户授权权限后能够获得好处之后,再向用户请求权限;
3.在绝对必要的情况下才向用户请求权限,例如:用户访问照片库时请求访问系统相册权限;
4.在展示系统权限的对话框前,先向用户显示自定义的对话框,若用户选择不允许,默认无 *** 作,若用户选择允许,再展示系统对话框。
下面来点干货吧.
这里罗列一些基本的权限申请处理.
1、媒体资料库/Apple Music权限
2、联网权限
3、相机权限
4、相册权限
5、麦克风权限
6、定位权限
7、通知权限
8、运动与健身
9、通讯录权限
10、Siri 权限
11、语音转文字权限
12、提醒事项
13、日历
14、FaceID或者TouchID 认证
15、健康
16、家庭、住宅数据
17、系统设置
18、微信、QQ
具体的使用如下:
info.plist 文件添加使用说明即可
举个使用例子:
推送权限判断
使用方法都是如此.
具体的使用方法查看 Demo 即可.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)