我一定在这里遗漏了一些非常明显的东西,但这是一个让我沮丧了好几天的问题。
在 xcode 4.5 上的 iOS 项目中,我在一个 XIB 中有几个标签,一个在另一个之上,在一个UIScrollView
占据UIView
. 每个标签都与视图一样宽,每个标签都比下一个高 20 px。有时,其中一个标签没有任何信息,因此它被设置为不可见,并且它下面的标签应该向上移动以占据空白空间。
问题是,如果在视图上选中“关闭”自动布局,标签会完全按照它们应该的方式向上移动,尽管UIScrollView
不再滚动。如果它是on,无论如何标签都不会移动。
这是代码......我基本上只是使用一个快速功能将每个标签向上移动不可见标签的高度。
[self moveObjectBy: self.festNameLabel moveByY:-(yearsLabel.frame.size.height-2)];
// this just quickly moves a label.
- (void)moveObjectBy:(UIView *)lbl moveByY:(int)byHeight {
CGRect newFrame = lbl.frame;
NSLog(@"%f, %d", newFrame.origin.y, byHeight);
newFrame.origin.y += byHeight; //yearsLabel.frame.size.height;
lbl.frame = newFrame;
}
当它运行时,NSLog
显示它的 Y 已经移动,但它不会在屏幕上移动。我确定它与垂直空间约束有关,但它不会让我删除约束,也不会让我将其更改为视图顶部空间以外的任何内容。就像我说的,我确定我错过了一些东西,但我已经用尽了我所知道的一切......