使用Xib创建的默认Controller文件,使用self.view.frame.size.width获取到的值是600,导致的布局显示问题

记录一点项目中遇到的问题, 场景是这样的:当我是用collection自定义了一个标签View,创建的时候设置的View的宽度是屏幕宽度,但是标签怎么滑动就是滑动不到最后,最后打印标签的宽度才发现是600 ,并不是屏幕宽度。时间紧,先记录一下,demo后录个gif。

一般创建的controller的xib文件默认的size属性是inferred,这个时候你使用代码 self.view.frame.size.width 去拿屏幕的宽度发现是600,并不是我们想想的对应的屏幕宽度320 375 414等宽度。如图:
使用Xib创建的默认Controller文件,使用self.view.frame.size.width获取到的值是600,导致的布局显示问题_第1张图片
WechatIMG2_Default.jpeg

注:使用默认的对其他的View没有影响,可以放心使用,只是自定义的标签View滑动不到最后,产生显示的bug

如果我把size的属性修改成Freeform之后 再去 self.view.frame.size.width 获取屏幕的宽度就是正确的了,标签的显示也可以滑动到最后了,如图:
使用Xib创建的默认Controller文件,使用self.view.frame.size.width获取到的值是600,导致的布局显示问题_第2张图片
WechatIMG3_freeform.jpeg
说明:
  • 项目中一般也不使用 self.view.frame.size.width 这样的方式去获取宽度,屏幕的宽高是有宏定义或者使用 [UIScreen mainScreen].bounds.size.width 来获取

你可能感兴趣的:(使用Xib创建的默认Controller文件,使用self.view.frame.size.width获取到的值是600,导致的布局显示问题)