针对不同的iPhone设备,如iPhone X& iPhone 8.我想使用 autoresizing 在状态栏的1px差异处启动 UIView 。我能够通过在iPhone X之前启动 UIView y轴21px来解决这个问题。我怎样才能动态地实现这个功能,以便 UIView 总是在所有iphone的staus bar之后启动。
在iPhone 8上加上它看起来很好
在iPhone X上没有看到1px的差异,因为视图从顶部开始
答案 0 :(得分:2)
iPhone X更新
以前,所有iPhone设备的状态栏高度均为20pt。但在iPhone X上,这是44pt。因此在实施UI时要小心。
如果您想更新mainthread中的UI或在viewWillAppear中调用。
CGFloat getstatusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
CGRect modifyFrame = your1PxFrame.frame ;
modifyFrame.origin.y = getstatusBarHeight ;
your1PxFrame.frame = modifyFrame;
答案 1 :(得分:2)
你应该使用autolayout!
使用autolayout and xcode 9
,您可以像下面一样管理它!
将UIView放在你的故事板或iphone 7或8的xib中!
然后在其上放置UIView
(您想要一个像素空间的视图)。
将其设为y
成为21 pixel
。
然后从safe area
给出该视图的顶部约束,并给出其他需求约束,如前导,尾随固定高度等。
请参阅下面的屏幕截图以便更好地理解!
Python: about catching ANY exception
结果是:
iPhone 8 plus:
iPhone X: