Xcode13.0和iOS15.0适配

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

看了掘友的文章后,今天才升级xcode13,跑了一下老项目,发现不少问题,于是记录一下心得。

Xcode13.0

下载后完成,就开始创建一个工程,发现界面变了不少。

一开始是没有那些后缀名的,我直接在Xcode->Preferences里面更改的

这时候我看到上面有一个issues,显示show inline的选项

show inline显示如下

show Minimized是显示如下:

对比可以发现1个简洁很多,1个是错误明显很多,就看个人喜爱了。

bulid了一下项目,发现没有buildSuccess的提示了,替代方案可以选择通知,直接在通知,找到xcode,选择提示就可以。

效果如下:

但感觉还是没有以前好,总是弹通知也感觉有点烦。

iOS15.0

手机升级到了iOS15.0,发现tableView的section Height有偏移

这是因为iOS 15 的 UITableView又新增了一个新属性:sectionHeaderTopPadding

他会给每一个section header 增加一个默认高度,当我们 使用 UITableViewStylePlain 初始化 UITableView的时候,就会发现,系统给section header增高了22像素。

解决方案:

   if (@available(iOS 15.0, *)) {
            _tableView.sectionHeaderTopPadding = 0;
        }
复制代码

iphone13机型

// iPhone12,iPhone12Pro,iPhone13,iPhone13Pro
#define iPhone12 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1170, 2532), [[UIScreen mainScreen] currentMode].size) : NO)
// iphone12ProMax,iphone13ProMax
#define iPhone12ProMax ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1284, 2778), [[UIScreen mainScreen] currentMode].size) : NO)
复制代码

老项目都是这么写的,我也不想改了,那就再加一个mini吧

// iPhone13mini
#define iPhone13mini ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1080, 2340), [[UIScreen mainScreen] currentMode].size) : NO)
复制代码

后面如果遇到有什么问题,再补充好了。

猜你喜欢

转载自juejin.im/post/7018495854168244260