您的位置:首页 > 移动开发 > IOS开发

【iOS奇葩特性】layoutSubviews在iPhone和iPad中,当设备方向改变后的调用情况

2015-08-21 11:29 381 查看
本文记录最近遇到的一个奇葩问题,以下是验证过程。

1、使用Xcode6 新建一个项目,设备“Devices”这个选项一定要选择“Universal”。

2、新建一个类,名字随便起,但是一定是UIView或者它的子类。我这里继承的是UIImageView,类名为LamImageView。然后在新建的类的“.m”文件中复写layoutSubviews方法,并在方法里打上一个断点。

3、在默认的ViewController.m文件中导入上一部新建的文件,并实例化一个LamImageView对象,代码如下:

LamImageView *im = [[LamImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 80)];
im.image = [UIImage imageNamed:@"title_1.png"];
[self.view addSubview:im];

以上是准备过程,下面开始验证:

4、Xcode选择iPhone模拟器,运行。然后发现触发了两次断点(为什么是两次这里都不多说,想了解的朋友可以去搜一下相关资料),跳过断点,再使用command+左/右方向键改变模拟器的方向,发现又触发了断点。说明啥问题,说明iPhone设备方向改变后还会调用layoutSubviews方法。

5、Xcode选择iPad模拟器,运行。也触发了断点,但是当改变模拟器方向后,断点没有被触发。是不是就说明,iPad的设备方向改变不会调用layoutSubviews方法。

由此得出:
iPhone:设备方向发生改变时,调用layoutSubviews方法。

iPad:设备方向发生改变时,不调用layoutSubviews方法。

整个验证过程到此结束,希望对大家有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  layoutSubviews iOS