iOS10中苹果的坑和Bug

前言

iOS10已经出来好几个月了,在开发的过程中遇到了一些Xcode的坑和iOS10中的bug,在这里记录一下。

1、UITextField输入中文后文本下移

** 触发条件 **:系统为iOS10
这是一个iOS10的bug,当你在一个xib的attributes inspector中将一个UITextField的BorderStyle设置为UITextBorderStyleNone后,在此textField中输入中文后文本将会下移。

设置BorderStyle为none

输入中文后文本下移

** 解决方法 **:
1、xib中不要设置BorderStyle,而改为在代码中设置UITextField的BorderStyle。

- (void)awakeFromNib {
    [super awakeFromNib];
    self.textField.borderStyle = UITextBorderStyleNone;
}

2、不要在xib中添加UITextField.

PS:第一种解决方法并不完美,实际上当输入的中文长度超过了textField的宽度后,文本依然会下移。

使用第一种方法后,仍然有问题

参考了各种资料后,还是没有找出最完善的解决方法,有强迫症的话就只能避免在xib中添加UITextField了,使用代码添加的UITextField是没有这个问题的。


只有通过xib添加的textField有这个bug

** 参考 **:uitextfield-chinese-character-moves-down-when-editing-in-ios-10

2、打开xib文件后卡死

** 触发条件 **:Xcode8.1打开特定xib文件
在开发的过程中发现使用Xcode8.1打开某些xib后,Xcode会变得异常卡顿,最后不得不强制关闭Xcode。原因是这些xib是由Xcode8.0创建并且使用了Autolayout,而且View中的TopBar属性设置为了非Inferred,可能是因为苹果在Xocde8.0和8.1上对xib中相关的计算有些不同导致的。


TopBar属性改为Inferred

** 解决方法 **:
将xib中TopBar属性改为Inferred后,再用8.1打开就会不卡了,但是可能会出现约束冲突,而且不能预览xib中的具体内容的问题。约束冲突可以自行解决,不能预览的问题只要重启下Xcode也能解决。

3、Xcode8.0中获取某个view的位置有问题

** 触发条件 **:使用Xcode8.0在xib中设置Autolayout
当我们在xib中设置好每个view的约束后,正常来说在这个xib初始化后,我们就可以在-layoutSubviews方法(在view中)或者-viewDidLayoutSubviews方法(在viewController中)中获取到每一个subview被约束正确计算后的位置。
但在Xcode8.0中,这是个例外,在8.0中存在一个bug:xib初始化后第一次在上述两个方法中获取某个被约束设置的view的frame时,返回的值会是(0, 0, 1000, 1000)

** 解决方法 **:
1、升级到Xcode8.1,在8.1中这个bug已经被修复了(就是这么简单粗暴)。
2、如果你没有升级Xcode的打算,那可以在获取view.frame前先调用该view的-layoutIfNeeded方法。

- (void)layoutSubviews {
    [super layoutSubviews];
    NSLog (self.myLabel); // 1000x1000 size 
    [self.myLabel layoutIfNeeded];
    NSLog (self.myLabel); // normal size
}

** 参考 **:
since-xcode-8-and-ios10-views-are-not-sized-properly-on-viewdidlayoutsubviews

4、最后

总的来说,由于苹果在iOS10中填加了在xib里面同时使用Autolayout和Autoresizing这一特性,导致出现了这几个UI上的Bug,只能希望苹果赶紧修复这几个bug了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 4,467评论 0 12
  • 该文章属于刘小壮原创,转载请注明:刘小壮[https://www.jianshu.com/u/2de707c93d...
    刘小壮阅读 30,357评论 47 100
  • 客官,您里边请~ 前言: 在这说点题外话,现在到处都在说iOS寒冬来了,朋友也好、公众号、新闻都在反应一个情况,就...
    M_慕宸阅读 2,821评论 0 10
  • 索引 友情提示:点击下方超链接, 开启新页面后, 会自动定位到对应的位置.也可以直接复制想看的内容, 使用 Com...
    李国安阅读 817评论 0 5
  • 初秋 一庭秋色满银觥,窗外初开醒菊声。 绿蚁新醅闻旧客,不期相约到天明。 连雨数日农田内涝 连阴密雨渐秋凉,水漫河...
    姜彦伟阅读 209评论 0 0