iphone6以及iphone6plus适配

手头维护的一个老项目,因为需要从iOS5.1开始支持,所以在页面适配上基本上使用硬编码和autoresizemask来实现iphone4~iphone5s的适配,情况看起来还算不错。到了iphone6以及以上的机型情况就有些不同了。

在补充了iphone6的default page之后,很多页面右边出现黑黑的一块,适配出现了很严重的问题。


1、初步定位问题出在320这种硬编码的上,检索了一下,将320都处理成super.view.bounds.size.width  /  containerView.bounds.size.width。

跑了下,部分页面修复了,但是很多containeriView依然我行我素,还是维持320的体宽。。。跪了。

2、查断点排查了下congtainerView们初始化的情况,发现在viewDidLoad,以及LoadView中获取的self.view.bounds.size是xib的原始值。问题定位到,一切就轻松了很多。

view初始化依然丢在viewDidLoad或者loadView中不去动他。添加viewDidLayoutSubView delegate function,在viewDidLayoutSubView中获取到正确的self.view.bounds.size,并以此配置子容器视图的几何属性。

在跑一遍,恩恩,效果很不错。整体上来看已经适配正确。

剩下就是调整一些控件的适配。

3、自定制view,控件的适配:在控件.m文件中添加-(void)layoutSubView方法,将原来代码中硬编码的宽度解开,依据父视图来确定自身的几何属性。


再跑一遍,well done。


总结,在viewcontroller中,不要在viewDidLoad中取获取view的size,此时获取到的大小是storyboard或者xib中的大小。以此做的布局是要出问题的。

正确的时机:viewController是在viewDidLayeroutSubView;view是在layoutSubView;layer是在layoutSubLayer。


viewWillAppear,viewDidAppear也可以获取到正确的size,但是不推荐。理由是:很多情况会出现重复计算,影响性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值