【发布时间】:2017-11-16 16:22:58
【问题描述】:
是否可以在UIStackView 之外渲染子视图?我有一个带有按钮和标签的垂直堆栈视图,并且我正在使用堆栈视图的宽度来适当地设置按钮的高度和宽度:
addArrangedSubview(self.loginMethodButton)
let widthConstraint = NSLayoutConstraint(item: self.loginMethodButton, attribute: .width, relatedBy: .equal, toItem: self, attribute: .width, multiplier: 1.0, constant: 0.0)
let heightConstraint = NSLayoutConstraint(item: self.loginMethodButton, attribute: .height, relatedBy: .equal, toItem: self.loginMethodButton, attribute: .width, multiplier: 1.0, constant: 0.0)
NSLayoutConstraint.activate([widthConstraint, heightConstraint])
然后我根据情况将 viewController 中的宽度调整为适当的大小。问题是,在按钮需要的较小尺寸之一中,宽度小于其下方的标签,这会切断标签。
如果我在设置标签时调用sizeToFit(),它会起作用,但是,在设置标签后调整大小时调用sizeToFit() 仍然会导致标签被切断。在标签和堆栈视图上将 clipsToBounds 设置为 false 无效。
是否可以在堆栈视图之外渲染视图?还是我必须找到一种方法来重新处理我的约束以解决这个问题?
【问题讨论】:
-
检查层次结构中是否有另一个视图可能是问题所在,还要检查 UILabel breakLineMode 对我来说似乎是 truncateTail 而不是 wordBreak
-
它需要放在一行中,文本只是说
Touch ID或Passcode,因此不能接受换行符。至于视图层次结构,它都是在UIStackView的子类中以编程方式创建的,我的setUpView方法只添加了两个排列好的视图,标签和按钮,所以不应该有任何额外的视图。
标签: ios swift autolayout