美文网首页iOS屏幕适配iOS学习笔记
iOS 适配iPhone6 plus的时候要注意

iOS 适配iPhone6 plus的时候要注意

作者: Figo_OU | 来源:发表于2015-10-14 20:14 被阅读1393次

    以前实习公司是用的是全代码写的程序,所以在可视化布局方面我还算是一个小白。所以不喜勿喷。

    今天在做项目的时候发觉之前写的一个控件,在iPhone6之前的机型都很正常,一到了iPhone6 Plus上,控件的frame值就莫名其妙地变大了。
    自定义的View好简单,就是一个UIView中添加了两个UIButton。两个btn 的宽度等于100,每个btn的高度都设为50。
    OK,我们来看看xib的结构


    在reveal中看 xib

    然后在控制器中引用我们刚刚写的view

    ozxDeview * oview = [[ozxDeview alloc] init];
    oview.frame = CGRectMake(0, 64, 100, 100);
    [self.view addSubview:oview];
    

    OK我们来看看运行后的情况。

    iphone6 plus 效果图 iPhone6 效果图

    iPhone5,6图 和6p的图

    宽度增加了39,高度增加了69。为什么呢?在iPhone6以及小屏幕手机都不会出现这样的问题,只有在6p上才会出现,奇怪了。

    问了一些老手,有的说要将stroyboard删掉,然后LaunchScreen.xib也删掉。(然而这并不能解决问题,难道我以后程序就不用sb来做?不科学啊,不过这也是demo,删就删吧,找原因要紧啊)

    删后发觉,iPhone6 变iPhone4s啦。(这个问题好解决)

    没有LaunchScreen.xib,也没有设置LaunchImage,只要在images.xcassets上设置LaunchImage就好了,这么简单也就不截图了。

    好了,废话也就不说那么多了。到了说原因的时候了。
    原来是因为调用该自定义view的控制器的xib的尺寸问题

    控制器的属性
    这是设置了4.7inch,那么在LayoutSubviews之前,编译器就会检测控制器设定的size,如果设置了4.7,而你运行在了5.5inch的6p上,那么它就会自动帮你扩大你自定义控件的frame

    解决方法:
    1.将控制器的size改为最大,或者inferred。
    2.将oview.frame = CGRectMake(0, 64, 100, 100);放到
    -(void)viewWillLayoutSubviews;里面执行

    可以在这里下载来玩玩哦
    https://github.com/ouzhenxuan/iphone6p_adaptation

    相关文章

      网友评论

        本文标题:iOS 适配iPhone6 plus的时候要注意

        本文链接:https://www.haomeiwen.com/subject/vtvocttx.html