我有一个视图和一个属性作为高度约束。
我将在运行时更改约束值,代码如下:
-(void) viewWillAppear {
[super viewWillAppear];
if (list.count) {
self.FilterBarViewHeightConstraint.constant = 35;
[self.ChartContainerView layoutIfNeeded];
// do something..
} else {
self.FilterBarViewHeightConstraint.constant = 0;
[self.ChartContainerView layoutIfNeeded];
}
我调试单步,将常量设置为0,但是当在屏幕上绘制视图时,我发现约束已更改回35.我想知道,我该如何调试此类问题,以及为什么会改变?
如果我捕获了一个视图层次结构,Xcode确实向我展示了self.height自动布局是35但是我确实改变了它:
前,
(lldb) po self.FilterBarViewHeightConstraint
<NSLayoutConstraint:0x7ffae9f5b300 V:[UIView:0x7ffae9fec800(35)]>
调用self.FilterBarViewHeightConstraint.constant = 0;
(lldb) po self.FilterBarViewHeightConstraint
<NSLayoutConstraint:0x7ffae9f5b300 V:[UIView:0x7ffae9fec800(0)]>
完全显示视图后,再次捕获视图层次结构:
(lldb) po 0x7ffae9f5b300
<NSLayoutConstraint:0x7ffae9f5b300 V:[UIView:0x7ffae9fec800(35)]>
答案 0 :(得分:0)
将代码放入主队列解决了我的问题。但仍需要更多的知识。
else {
dispatch_async(dispatch_get_main_queue(), ^{
self.FilterBarViewHeightConstraint.constant = 0;
[self.ChartContainerView layoutIfNeeded];
});}