iOS 14 踩坑记录

950 阅读1分钟

1、使用 popToRootViewControllerAnimated:YES 返回,导致 TabBar 会被隐藏问题

这个问题是在 Xcode 12 + iOS 14 下才会出现,不清楚是系统 bug 还是苹果修改了什么规则,目前自己通过验证的解决办法是:

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if (self.viewControllers.count == 1) {
        viewController.hidesBottomBarWhenPushed = YES;
    }else {
        viewController.hidesBottomBarWhenPushed = NO;
    }
    [super pushViewController:viewController animated:animated];
}

具体可以看 这里

但是上面这么设置会发现有些时候,打开应用第一次进入第三级页面 TabBar 会跑出来,不知道什么原因,欢迎大家给出建议。

还有一种最简单粗暴的方式是把 popToRootViewControllerAnimated:NO 动画关了,只要能接受没有动画的效果。

2、iOS 14模拟器运行报错问题

真机能够跑起来,但是发现 iPhone 12 的模拟器会报出各种奇怪的错误,这时候尝试在 Build Settings -> User Defind -> VALID_ARCHS 中添加 arm64 armv7 armv7s x86_64 试试看。

3、Label 文本显示异常问题

经过测试发现 Label 显示同样的文本,需要的宽高多出来一点,如果之前设置的宽高刚好能显示的,在 iOS 14 下可能位置就不够。

4、UITableViewCell 上面的控件点击不了问题

会发现在 cell 上面有一层 UITableViewCellContentView 挡住了,其实这个是代码不规范引起的,如果之前在 cell 中直接添加控件在 self 上面就会出现这个问题,正确做法是控件添加在self.contentView 上面。

如果 iOS 14 跟 Xcode 12 如果还有其他坑,欢迎大家一起交流!