XCode 如果 "view as:" 不同,模态 VC 将被截断
XCode Modal VC is cut off if "view as:" differs
我不知道这是错误还是什么,我确实使用了自动布局,除了模态视图控制器外一切正常。
如果 "view as:" 选项与模拟器的大小相同,则它们没有问题。但是当它们不同时,屏幕会截断一些内容。
因此,如果我在模拟 iPhone 8 上检查 "view as iPhone 8" 和 运行 就没问题。
但是如果我在模拟SE上做,它会切断一些内容:
但前提是它是模态视图控制器
View as iPhone 8, Simulator as iPhone SE
View as iPhone SE, Simulator as iPhone SE
为什么会这样?
这里唯一的错误是施加圆角的遮罩(或其他任何东西)尺寸错误。
您的圆角代码可能在错误的地方 — 可能在 viewDidLoad
。这是一个错误,因为在调用 viewDidLoad
时,您的视图尚未达到其最终大小。
您的第一个屏幕截图就是一个很好的例子。模态视图以 iPhone 8 宽度加载,假设这是它的大小,您可以进行圆角处理。但是随后视图缩小到 iPhone SE 的宽度,因此舍入计算最终不适合视图的实际大小。
解决方法很简单:将圆角代码移至viewDidLayoutSubviews
。不过要小心:viewDidLayoutSubviews
运行了很多次,所以使用 Bool 标志来确保你只绕过一次拐角,即第一次调用它时。
我不知道这是错误还是什么,我确实使用了自动布局,除了模态视图控制器外一切正常。
如果 "view as:" 选项与模拟器的大小相同,则它们没有问题。但是当它们不同时,屏幕会截断一些内容。
因此,如果我在模拟 iPhone 8 上检查 "view as iPhone 8" 和 运行 就没问题。
但是如果我在模拟SE上做,它会切断一些内容:
但前提是它是模态视图控制器
View as iPhone 8, Simulator as iPhone SE
View as iPhone SE, Simulator as iPhone SE
为什么会这样?
这里唯一的错误是施加圆角的遮罩(或其他任何东西)尺寸错误。
您的圆角代码可能在错误的地方 — 可能在 viewDidLoad
。这是一个错误,因为在调用 viewDidLoad
时,您的视图尚未达到其最终大小。
您的第一个屏幕截图就是一个很好的例子。模态视图以 iPhone 8 宽度加载,假设这是它的大小,您可以进行圆角处理。但是随后视图缩小到 iPhone SE 的宽度,因此舍入计算最终不适合视图的实际大小。
解决方法很简单:将圆角代码移至viewDidLayoutSubviews
。不过要小心:viewDidLayoutSubviews
运行了很多次,所以使用 Bool 标志来确保你只绕过一次拐角,即第一次调用它时。