将 UILabel 作为子视图添加到具有编程约束的 UITextView 时,如何停止 "content size" 约束
How can I stop the "content size" constraints when adding a UILabel as a subview to a UITextView, with programmatic constraints
我有这个UIVIew
扩展方法
func addSubviewWithConstrainedBounds(subview:UIView) {
subview.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(subview)
NSLayoutConstraint.activate([
subview.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 0),
subview.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 0),
subview.topAnchor.constraint(equalTo: self.topAnchor, constant: 0),
subview.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0),
])
}
我的想法是我可以通过编程将一个视图添加到另一个视图中,我将利用自动布局将子视图的边界与父视图相匹配
当我调用它来将我的 subview
添加到 UIView
超级视图时,它起作用了
然而,当我尝试将我的 subview
添加到 UITextView
超级视图时,subview
坚持从中获取一些 width
和 height
约束"content size"。如您所见,我的尾随和底部约束被忽略(控制台中也没有例外)
为了比较,这是我将 UILabel
添加到 UIView
而不是 UITextView
时的运行时约束
我是否可能在这里遗漏了 属性?我需要设置什么?还是这只是尝试向 UITextView
添加子视图的怪癖?
此行为背后的原因是 UITextView 是 UIScrollView。这意味着如果您的子视图没有 height/width,您的布局是不明确的,因此布局引擎会添加固有大小来解决该问题。
这取决于您希望在文本视图中如何或在何处放置子视图,在这种情况下,您需要更具体地说明对齐方式。如果对您有帮助,请查看内容拥抱优先级选项。
但最后我认为你最好不要将标签添加为子视图,如果你可以使用 TextKit 的功能在你的文本视图中设置和定位你计划的标签的内容。
我有这个UIVIew
扩展方法
func addSubviewWithConstrainedBounds(subview:UIView) {
subview.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(subview)
NSLayoutConstraint.activate([
subview.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 0),
subview.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 0),
subview.topAnchor.constraint(equalTo: self.topAnchor, constant: 0),
subview.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0),
])
}
我的想法是我可以通过编程将一个视图添加到另一个视图中,我将利用自动布局将子视图的边界与父视图相匹配
当我调用它来将我的 subview
添加到 UIView
超级视图时,它起作用了
然而,当我尝试将我的 subview
添加到 UITextView
超级视图时,subview
坚持从中获取一些 width
和 height
约束"content size"。如您所见,我的尾随和底部约束被忽略(控制台中也没有例外)
为了比较,这是我将 UILabel
添加到 UIView
而不是 UITextView
我是否可能在这里遗漏了 属性?我需要设置什么?还是这只是尝试向 UITextView
添加子视图的怪癖?
此行为背后的原因是 UITextView 是 UIScrollView。这意味着如果您的子视图没有 height/width,您的布局是不明确的,因此布局引擎会添加固有大小来解决该问题。
这取决于您希望在文本视图中如何或在何处放置子视图,在这种情况下,您需要更具体地说明对齐方式。如果对您有帮助,请查看内容拥抱优先级选项。
但最后我认为你最好不要将标签添加为子视图,如果你可以使用 TextKit 的功能在你的文本视图中设置和定位你计划的标签的内容。