swift和oc横竖屏切换后获得的屏幕尺寸不一样问题

今天测试题了一个bug:横竖屏切换后,一个控件位置不对。找了半天,发现是这个控件用swift写的,其他位置正常控件是用oc写的,初步猜测是否是因为屏幕转换后,swift的屏幕尺寸更新有延迟造成获取的尺寸还是横竖屏为切换完成后的旧尺寸。发现是错的。

主要原因是:oc获取屏幕尺寸用的是宏,而swift没有“宏”定义,值有swift文件里定义let(常量)var变量。如图:

oc

swift

 

在这里,swift我用的是常量let来获取屏幕尺寸,导致横竖屏切换完毕,获取的尺寸永远是一样的,因为let赋值完无法改变,是用var也一样的

修改为下边即可(每次都是执行一次方法,获取最新的屏幕尺寸,而不是常量):

 

是用swift转换oc里的宏定义时,需要注意oc宏定义里边值可能会变的宏,转换为swift时,一定要转换为方法,如果转换为常量或者变量,会得到错误的值。

 

 

 

更多问题,欢迎加群讨论:565191947

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值