我正在构建一个允许用户创建模因(Udacity project: Meme Me)的应用。
该接口包括两个UIToolbar
(顶部和底部)和一个UIImageView
,它们跨越它们之间的空间。其余的UI元素与我的问题无关。这是该应用首次启动时的屏幕截图:
将图像加载到UIImageView
中时,两个工具栏都会调整大小并变高,如下所示:
是什么导致工具栏调整大小,更重要的是,如何防止它们调整大小?
答案 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
当然,您可以将topToolbar
和bottomToolbar
替换为您称为工具栏的名称,并将50.0
替换为适合您的用例的值。
这称为自动版式。设置工具栏后(如果您以编程方式创建它们),应调用这两行代码。
但是,iOS初学者开发课程中可能不会涵盖程序化UI的概念,您最有可能使用情节提要来构建程序化UI,这说明了您的工具栏为何会失控!
如果您是使用“界面生成器”(即在情节提要中)创建的,则可以使用上面的代码修改它们的高度约束,或者通过单击以下按钮在“界面生成器”中使用布局设置来修改它们:
如果您决定通过上述情节提要设置约束,请注意,XCode可能会可能告诉您,您需要指定更多约束(例如宽度约束),以便工具栏的编译器不认为该位置“模棱两可”。