我正在开发一个 iOS (6) 应用程序,我有一个视图,我改变了它的大小(动画),并且在那个视图中是一个 UILabel,我想随着视图一起增长,但不成比例。
即我需要视图占据,如果视图是特定大小的,比如说 90% 的视图,但是当我把它变大(到另一个特定大小)时,我只希望它占据,比如 80%。这是为了容纳 UILabel 周围的其他子视图,这些子视图将在超级视图增长时变得可见。
我已经尝试使用 NSLayoutContraints ,并将前导空间设置为它需要的空间,以及设置 UILabel 的宽度以使其适当增长,我还尝试设置前导和尾随空格(如然后宽度会自动增长)。
奇怪的是,我在同一个动画代码块中(使用 UIView animateWithDuration:...)有其他子视图,它们的 NSLayoutContraints 我正在玩,它们都可以工作。然而,所有这些都是间距限制,而不是大小限制,并且没有涉及 UILabel,所以我不知道这是否与它有关......
然后我尝试设置 UILabel 的 translatesAutoresizingMaskIntoConstraints = YES,并且只在标签上使用 setFrame:,虽然这将标签的大小和位置设置在我想要的位置,但更改没有动画,所以看起来很可怕......
有没有其他人有过这样的经历或任何想法来帮助我?
谢谢
以下是我一直在尝试的一些代码,其中“left”是标签的前导空间约束,“width”是标签的宽度约束。
setFrame 方法在父视图控制器的动画代码块中调用。
- (void)setFrame:(CGRect)frame {
[super setFrame:frame];
float gap = ((frame.size.height - 36) - 9 * [self.account.accountData numberOfBars]) / ([self.account.accountData numberOfBars] + 1);
for (NSLayoutConstraint *constraint in constraints) {
constraint.constant = gap;
}
self.left.constant = frame.size.width * 34/160 + (2 - 34 * 140 / 160);
self.width.constant = frame.size.width * 0.575 + 55.5;
[self layoutIfNeeded];
}