自适应大小和约束

3

我有一个视图:

我的视图

在label1和label2之间存在布局约束。按下按钮后,将文本视图中的文本添加到label1中。添加后,会调用sizeToFit来重新调整label1的大小以适应文本。但是,在调整大小后,似乎约束不起作用了:

约束

有人有什么想法能让约束起作用吗?

我的代码:

@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

1
你的 viewDidAppear 方法缺少了对 super 的调用。 - Scott Berrevoets
2个回答

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

0

我曾经遇到过类似的问题,即UIImageView位于多个UILabelView的顶部。约束设置为在顶部图像和下面的标签堆之间保持一小段距离。

问题是,当将未知大小的图像加载到UIImage中时,高度会发生变化,但随后的标签不会向下推动,并被图像覆盖。

我尝试删除UIImageView的设置高度,但XCode不允许我这样做。

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

之后,标签沿着视图控制器向下移动,与图像之间有均匀的空间,如预期。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接