UIImageView 显示图像时如何防止 UIToolbar 调整大小?
Posted
技术标签:
【中文标题】UIImageView 显示图像时如何防止 UIToolbar 调整大小?【英文标题】:How to prevent UIToolbar from getting resized when UIImageView displays an image? 【发布时间】:2018-10-12 01:25:14 【问题描述】:我正在构建一个允许用户创建模因 (Udacity project: Meme Me) 的应用。
界面由两个UIToolbar
s(顶部和底部)和一个跨越它们之间空间的UIImageView
组成。其余的 UI 元素与我的问题无关。这是应用程序首次启动时的屏幕截图:
当图像加载到UIImageView
时,两个工具栏都会调整大小并变小,如下所示:
是什么导致工具栏调整大小,更重要的是,如何防止它们调整大小?
【问题讨论】:
如果我的回答解决了您的问题,请记住,您可以通过勾选答案左上角的 √ 将其标记为正确。由于我花了很多时间来写它,我真的很感激! 【参考方案1】:您的工具栏可能会调整大小,因为除非您对 UI 元素(例如工具栏和UIImageView
s)指定约束,否则 XCode 会以自己的方式解释它并向您展示它认为最好的布局。我们通常通过将每个 UI 元素的以下属性显式设置为 false 来解决此问题:
MyUIElement.translatesAutoresizingMaskIntoConstraints = false
然后以编程方式指定元素的约束。请注意,MYUIElement
是您为 UIElement 命名的任何名称。
这告诉 XCode 作为程序员,您希望完全控制 UI 元素在其视图中的位置。
您可以通过编程设置约束来防止工具栏调整大小:
topToolbar.heightAnchor.constraint(equalToConstant: 50.0).isActive = true
bottomToolbar.heightAnchor.constraint(equalToConstant: 50.0).isActive = true
当然,您可以将 topToolbar
和 bottomToolbar
替换为您命名工具栏的任何名称,并将 50.0
替换为适合您用例的任何值。
这称为自动布局。这两行代码应该在设置工具栏后调用(如果您以编程方式创建它们)。
然而,程序化 UI 的概念可能不会包含在初学者 ios 开发课程中,您很可能使用情节提要来构建它,这解释了为什么您的工具栏会失去控制!
如果您使用 Interface Builder(即在您的故事板中)创建了它们,那么您可以使用上面的代码修改它们的高度限制,或者通过单击下面的按钮在 Interface Builder 中调整布局设置:
如果您决定通过上述情节提要设置约束,请注意可能 XCode 会告诉您需要指定更多约束(例如宽度约束),以便工具栏的编译器不会将位置视为“模棱两可”。
【讨论】:
以上是关于UIImageView 显示图像时如何防止 UIToolbar 调整大小?的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 UIImageView 使用 Autolayout 调整大小
如何在用户配置文件视图控制器上显示从火存储到 UIImageView 的图像?
UIView 中的 UIImageView 并且不显示超出范围的图像部分