如何在UIImageView显示图像时防止UIToolbar调整大小?

时间:2018-10-12 01:25:14

标签: ios swift uiimageview uikit uitoolbar

我正在构建一个允许用户创建模因(Udacity project: Meme Me)的应用。

该接口包括两个UIToolbar(顶部和底部)和一个UIImageView,它们跨越它们之间的空间。其余的UI元素与我的问题无关。这是该应用首次启动时的屏幕截图:

Meme Me app upon launching

将图像加载到UIImageView中时,两个工具栏都会调整大小并变高,如下所示:

Meme Me app after displaying an image

是什么导致工具栏调整大小,更重要的是,如何防止它们调整大小?

1 个答案:

答案 0 :(得分:0)

您的工具栏可能正在调整大小,因为除非您在UI元素(例如工具栏和UIImageView)上指定约束,否则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

当然,您可以将topToolbarbottomToolbar替换为您称为工具栏的名称,并将50.0替换为适合您的用例的值。

这称为自动版式。设置工具栏后(如果您以编程方式创建它们),应调用这两行代码。

但是,iOS初学者开发课程中可能不会涵盖程序化UI的概念,您最有可能使用情节提要来构建程序化UI,这说明了您的工具栏为何会失控!

如果您是使用“界面生成器”(即在情节提要中)创建的,则可以使用上面的代码修改它们的高度约束,或者通过单击以下按钮在“界面生成器”中使用布局设置来修改它们:

enter image description here

如果您决定通过上述情节提要设置约束,请注意,XCode可能会可能告诉您,您需要指定更多约束(例如宽度约束),以便工具栏的编译器不认为该位置“模棱两可”。