我的代码发生了很奇怪的事情。在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.信息视图应隐藏(但它部分可见)
1.信息视图应该是可见的(但它部分隐藏)
2.信息视图隐藏了
2.信息视图可见