sizeToFit和约束

时间:2012-10-19 11:52:06

标签: ios ios6 autolayout

我有一个观点:

my view

label1和label2之间存在布局约束。按下按钮可将文本视图中的文本添加到label1。标签1调整后适合文本(调用sizeToFit)。调整大小后,看起来约束不起作用:

constraint

有人知道如何使约束有效吗?

我的coode:

@interface ViewController ()
{
    CGFloat _width;
}
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void) viewDidAppear:(BOOL)animated
{

    _width = self.l1.frame.size.width;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction)addText:(id)sender {
    self.l1.text = [NSString stringWithFormat:@"%@ %@", self.l1.text, self.text.text];
    self.l1.frame = CGRectMake(self.l1.frame.origin.x, self.l1.frame.origin.y, _width, 0);
    [self.l1 sizeToFit];
}
@end

2 个答案:

答案 0 :(得分:4)

我找到了原因:高度约束等于标签1的40。当我将其更改为更大或相等时,所有其他约束都可以正常工作。

答案 1 :(得分:0)

我有一个类似的问题,其中UIImageView位于几个UILabelViews的顶部。约束被设置为在顶部图像和下面的标签堆栈之间保持小的距离。

问题在于,当将未知图像大小加载到UIImage中时,高度会发生变化,但是后面的标签没有向下推,而是被图像覆盖。

我试图删除UIImageView的设置高度,但XCode不会让我。

我通过将显式UIImageview高度限制的优先级降低到1来解决了这个问题。

之后,标签向下移动到ViewController,图像与它们之间的空间均匀,如预期的那样。