是否可以在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无效。
是否可以在堆栈视图外部渲染视图?或者我是否必须找到一种方法来重新设置我的约束以解决这个问题?
答案 0 :(得分:2)
UIStackView
是"非呈现"对象...它所做的只是安排其他视图。
如果问题是您的UILabel
太宽而无法放入Stack View提供的区域,那么您需要将标签设置为"自动缩小"字体,或者您需要更改堆栈视图约束以允许更宽的标签。
修改 根据您的其他评论,以下内容不正确。
您需要在"上设置.clipsToBounds
"查看...基于您正在显示的图形,这将是深蓝色框(我假设这是UIView
,图像和标签为子视图)。