Stack View 大小变化无法可视化
Posted
技术标签:
【中文标题】Stack View 大小变化无法可视化【英文标题】:Stack View size change cannot be visualized 【发布时间】:2018-05-02 02:26:36 【问题描述】:在一个基本上使用所有屏幕空间的常规 UIView 中,我放置了一个具有垂直和水平对齐的 Stack View,以及一个约束,使得里面的图像具有相同的大小。
因此,我期望一旦整个 Stack View 的大小发生变化,它仍然会居中,并且所有图像都将具有相同的大小。事实上,如果我添加一个约束来设置它的高度,一切都会很好地工作。
当我想以编程方式设置这个高度而不是作为约束时,问题就来了。为此,我只是这样做:
print(myStackview.frame.size)
myStackview.frame.size.height = 400
print(myStackview.frame.size)
从用户的角度来看,Stackview 绝对没有发生任何事情,但事实上,当我打印它的大小时,尺寸是不同的,它似乎可以工作。
我在 viewDidLoad 和 viewDidLayourSubviews 中写了这行代码,但什么也没发生。会是什么?
【问题讨论】:
【参考方案1】:不要更改堆栈视图的框架。向堆栈视图添加高度约束并将其更改为常量。 您可以通过编程方式更改约束的常量值:
let heightConstraint = heightAnchor.constraint(equalToConstant: 200)
heightConstraint.isActive = true
//later in code
heightConstraint.constant = 400
【讨论】:
以上是关于Stack View 大小变化无法可视化的主要内容,如果未能解决你的问题,请参考以下文章
Android获取窗口可视区域大小: getWindowVisibleDisplayFrame()