如果“查看为:”不同,XCode Modal VC 将被切断
Posted
技术标签:
【中文标题】如果“查看为:”不同,XCode Modal VC 将被切断【英文标题】:XCode Modal VC is cut off if "view as:" differs 【发布时间】:2018-07-20 15:22:14 【问题描述】:我不知道这是一个错误还是什么,我确实使用了自动布局,除了模态视图控制器之外一切正常。
如果“查看为:”选项与模拟器的大小相同,则它们没有任何问题。但是当它们不同时,屏幕会切断一些内容。
因此,如果我确实选中“查看为 iPhone 8”并在模拟的 iPhone 8 上运行它就可以了。
但如果我在模拟 SE 上执行此操作,它会截断一些内容:
但前提是它是一个模态视图控制器
View as iPhone 8, Simulator as iPhone SE
View as iPhone SE, Simulator as iPhone SE
为什么会这样?
【问题讨论】:
【参考方案1】:这里唯一的错误是施加圆角的遮罩(或其他任何遮罩)的尺寸错误。
您的四舍五入代码可能在错误的位置 — 可能在 viewDidLoad
。这是一个错误,因为在调用 viewDidLoad
时,您的视图尚未达到其最终大小。
您的第一个屏幕截图就是一个完美的例子。模态视图以 iPhone 8 的宽度加载,并且假设这是它的大小,您会进行圆角舍入。但随后视图被缩小到 iPhone SE 的宽度,因此舍入计算最终不适合视图的实际大小。
解决方案很简单:将圆角代码移动到viewDidLayoutSubviews
。不过要小心:viewDidLayoutSubviews
运行了很多次,所以使用 Bool 标志来确保你只绕过角落一次,第一次调用它。
【讨论】:
以上是关于如果“查看为:”不同,XCode Modal VC 将被切断的主要内容,如果未能解决你的问题,请参考以下文章
从 Modal/Popover 展开 Segue 导致开始/结束外观转换的调用不平衡
Xcode 11.1 查看控制器在当前 VC 下可见时以模态方式呈现