更新约束时,视图si定位错误

时间:2015-01-11 22:22:47

标签: ios objective-c uiview autolayout nslayoutconstraint

我的代码发生了很奇怪的事情。在iOS 8上一切正常,但iOS 7存在问题 有一个代码,我更新约束:

- (void)setHasInfo:(BOOL)hasInfo {
    if (hasInfo) {
        self.infoViewTopConstraint.constant = 0;
        [self layoutIfNeeded];
    }
    else {
        self.infoViewTopConstraint.constant = - self.infoView.bounds.size.height;
        [self layoutIfNeeded];
    }
    _hasInfo = hasInfo;
}

在iOS 8中可行,但在iOS 7上,这个位置是错误的。我检查NSLog,infoView的高度是130.所以我把代码更改为:

- (void)setHasInfo:(BOOL)hasInfo {
    if (hasInfo) {
        self.infoViewTopConstraint.constant = 0;
        [self layoutIfNeeded];
    }
    else {
        self.infoViewTopConstraint.constant = - 130;
        [self layoutIfNeeded];
    }
    _hasInfo = hasInfo;
}

突然间一切正常。因此,在第一个示例中,如果我记录infoView y位置,如果得到62或-68,但在第二个示例中,我得到0或-130。我觉得这很奇怪,因为如果你查看代码,你会看到当BOOL = YES时约束被设置为0但是如果我在控制台中记录它一次是0而下一次是62.它是怎么回事可能的?

以下是模拟器的截图:
1.信息视图应隐藏(但它部分可见)
Info View should be hidden
1.信息视图应该是可见的(但它部分隐藏)
Info View should be visible
2.信息视图隐藏了 Info View is hidden
2.信息视图可见
Info View is visible

0 个答案:

没有答案