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

本文记录最近遇到的一个奇葩问题,以下是验证过程。


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方法。


整个验证过程到此结束,希望对大家有所帮助。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值