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

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

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

oc

swift

 

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

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

swift和oc横竖屏切换后获得的屏幕尺寸不一样问题_第1张图片

 

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

 

 

 

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

你可能感兴趣的:(app苹果iOS类)