iPhone X 适配(Swift篇)

🇨🇳中文介绍

随着iPhone X的销售,相信各位土豪很多都已经入手iPhone X了吧,反正我是比较喜欢的,无奈囊中羞涩,只能玩玩模拟器了。

iPhone X 镇楼

这只是个模拟器

1.科普模拟器样式

xcode 9 模拟器自带保护套,有人喜欢有人厌,据说大神都念旧,其实模拟器是可以调的,如果你用的本的屏幕比较小,你可以把鼠标放在模拟器四周调节大小。如果你想找回以前的感觉,请跟着下图做:

样式调节
没有立体感的平面

2.科普iPhone X的设计图

网上找的图

从这个图里面,我们可以看到iPhone X的边框都是圆角,这证明了苹果的发展方向,从6开始的圆弧到现在的X,扁平化更加突出,从上图的样式可以看出,几乎就像一张纸。这张图上我们可以看出来状
态栏变了,为了迎合齐刘海iPhone X的状态栏从原来的20变更为现在的44

3.科普启动页的适配

iPhone X采用的是跟plus一样的@3x图,而不是大家臆想出来的@4x图。记得昨天,上周设计妹妹钉钉上问我,iPhone X难道要单独做套图吗?恶作剧的心理调戏妹子,我回了个🙂,妹子傻乎乎的开始切图,切着骂着我曹,四倍图还得计算,草草草,我装着啥也没听到,出去抽根烟回来,妹子告诉我,先给你几张图吧,我晚上估计得加班了,我看看妹子说,晚上请我吃饭,我只让你切一张图,其余我用代码实现,妹子当时高兴地差点抱住我,这逼我感觉装的可以。言归正传啊,如果你用的是LaunchImage来管理启动页的,去找妹子弄一张1125 * 2436的图,如果你使用的是LaunchScreen来管理启动页的,你也可以去找妹子要张图,毕竟UI妹子都很萌的,开玩笑啦,主要是iPhone X的宽高比发生了变化,8的宽度,8p他哥的高度。记住啊,1125 * 2436

4.导航栏的适配

其实吧很简单的,我就自定义了几个宏,全局替换了一下,谁让我跟不上苹果爸爸的步伐呢,把导航栏高度全部写死为64了。

/************************  屏幕尺寸  ***************************/
// 屏幕宽度
let JMTWindowWidth = UIScreen.main.bounds.size.width

// 屏幕高度
let JMTWindowHeight = UIScreen.main.bounds.size.height

// iPhone4
let isIphone4 = JMTWindowHeight  < 568 ? true : false

// iPhone 5
let isIphone5 = JMTWindowHeight  == 568 ? true : false

// iPhone 6
let isIphone6 = JMTWindowHeight  == 667 ? true : false

// iphone 6P
let isIphone6P = JMTWindowHeight == 736 ? true : false

// iphone X
let isIphoneX = JMTWindowHeight == 812 ? true : false

// navigationBarHeight
let navigationBarHeight : CGFloat = isIphoneX ? 88 : 64

// tabBarHeight
let tabBarHeight : CGFloat = isIphoneX ? 49 + 34 : 49

其实吧,这就是懒散造成的,代码不规范,我常给团队的人开会说,不要在代码里出现太多的重复代码,重复数字,重复字符串等等等等,我们要保持代码简洁优美,哈哈哈,说归说,做归做,不过我别的都做到了,就这一个疏忽啊,因为谁想到他还会变呢。

没有问题

完美切合

5.MJRefresh和继承自UIScrollView的视图的iOS 11适配

背景:前两天一个同行问我了一个问题:

问题

还有就是说如果你使用了MJRefresh进行刷新,并且你隐藏了导航栏,就会出现下拉刷新错乱的问题。
这跟我这哥们问的问题是一种类型的,因为iOS 11上废除了automaticallyAdjustsScrollViewInsets这个方法,使用UIScrollView's contentInsetAdjustmentBehavior来代替,解决办法就是一段代码:

OC:

 if (@available(iOS 11.0, *)) {
        self.collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    }else {
        self.automaticallyAdjustsScrollViewInsets = NO;
    }

swift:

if #available(iOS 11.0, *) {  
    tableView.contentInsetAdjustmentBehavior = .never  
} else {  
    self.automaticallyAdjustsScrollViewInsets = false  
}  

因为哥们是OC写的项目,大家用的时候注意写成Swift。

6.iPhone X 脚底适配

脚底适配,这个就要看你们公司产品的意见了。
其实底部圆角距离是34
说白了就是设置你底部按钮距离下边界34
注意不要让上面的视图盖到了底部按钮。因为viewSafeAreaInsetsDidChange调用顺序实在viewWillAppear之后,在viewWillLayoutSubvies之前调用。

7.iOS 11 下tableView的头视图和脚视图

在iOS11里面有时候在tableView的头部和尾部留白,因为苹果给滚动试图加进去了self-sizeing,开始计算逐步计算contentSize,默认如果不去实现viewForHeaderInSection就不会调用heightForHeaderInSection,尾部试图一样。

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {  
    return nil  
}  
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {  
    return nil  
}  

如果你不想实现viewForHeaderInSection也不想留白,那么只需要你把self-sizeing自动估高关闭即可

/// 自动关闭估算高度,不想估算那个,就设置那个即可
self.tableView.estimatedRowHeight = 0
self.tableView.estimatedSectionHeaderHeight = 0
self.tableView.estimatedSectionFooterHeight = 0

8. xcode 无线真机测试

这应该是xcode 9的一个亮点吧,但是速度真的不敢恭维。注意手机和电脑必须在同一个局域网内
首先使用手机连接xcode之后,打开window->Devices and Simulator->勾选Show as run destinationConnect via network,这样就可以无线测试了,反正我还用线吧,因为我是个传统的人。

9.iOS 11 真机地图

iOS 11地图适配,在iOS11中,如果使用到地图,我们就需要在info,里面添加NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription才可以在iOS 11里面正常调出地图。

总结

最近懒得要死,什么都提不起劲,所以文章拖到现在才写。各位请见谅,嘻嘻。有人买X的话,留个言,只要告诉我,玩着美不美就行了。

福利

壁纸大全

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342