Swift UIView 自动布局和约束

Posted

技术标签:

【中文标题】Swift UIView 自动布局和约束【英文标题】:Swift UIView autolayout and constraints 【发布时间】:2019-08-01 05:54:48 【问题描述】:

我的场景,我在键盘顶部创建了工具栏视图。我在 ViewController 顶部添加了 UIView 拖放,如下图所示

在这里,iPhone X 我可以看到完美的尺寸宽度,但如果我运行其他设备,宽度会发生变化。所以工具栏视图显示宽度的一半,而不是显示完美的宽度。如何为此设置自动布局和约束。如何解决这个问题?

【问题讨论】:

如果您可以拖放添加它,您也可以将其固定在故事板中 怎么做?抱歉,我找不到你@Lu_ 向我们展示您在 Interface Builder 中应用于 Tool Bar 的约束 你以前用过情节提要吗?您可以搜索故事板约束的堆栈溢出 你没有显示任何代码,没有来自可视化调试器的截图,这样的问题很难理解 【参考方案1】:

我和你一样添加了视图

有约束

将此视图添加为inputAccessoryView

myTextField.inputAccessoryView = viewAccessory

而且工作正常


编辑 - 工具栏作为 InputAccesory

您可以使用工具栏来实现这一点(没有任何约束头痛)。检查以下步骤。

选择如下工具栏并添加此工具栏作为您的视图。

现在通过拖放UIBarButtonItem 添加如上图所示的按钮,并为每个BarButton 分配图像。要使其宽度灵活且分布均匀,只需添加Flexible Space Bar Button Item

现在您的工具栏层次结构应该如下所示

在你的代码中

@IBOutlet var toolBarAccessory: UIToolbar!
@IBOutlet weak var myTextField: UITextField!

override func viewDidLoad() 
    super.viewDidLoad()
    myTextField.delegate = self
    myTextField.inputAccessoryView = toolBarAccessory


输出:

【讨论】:

哇。这是我的预期。我也有这样的情况,但无论如何我都没有工作我是仔细检查,我将添加我的约束屏幕。谢谢人 请检查上面更新了我的问题。仍然无法正常工作。如果我做错了什么,请告诉我。 @BenDev 检查更新的答案。你不需要任何单一的约束。如果你想尝试新的更新,那就去吧。

以上是关于Swift UIView 自动布局和约束的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 运行时更改自动布局约束的 UIView 的框架

隐藏视图时,自动布局中的 Swift 约束不会改变

Swift UIView 小部件自动布局不起作用

如何在ios swift中以编程方式创建自动布局等宽度约束?

使用 UIAttachmentBehavior 和自动布局约束拖动 UIView

程序化自动布局、约束和 UIView 运行时