sizeToFit 和约束
Posted
技术标签:
【中文标题】sizeToFit 和约束【英文标题】:sizeToFit and constraints 【发布时间】:2012-10-19 11:52:06 【问题描述】:我有一个看法:
label1 和 label2 之间存在布局约束。按下按钮将文本视图中的文本添加到 label1。之后,标签 1 被调整大小以适合文本(调用 sizeToFit)。调整大小后,约束似乎不起作用:
有人知道如何使约束起作用吗?
我的代码:
@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
【问题讨论】:
您的viewDidAppear
缺少对super
的呼叫。
【参考方案1】:
我找到了原因:高度约束等于标签 1 的 40。当我将其更改为大于或等于时,所有其他约束都可以正常工作。
【讨论】:
【参考方案2】:我有一个类似的问题,其中一个 UIImageView 位于几个 UILabelViews 的顶部。约束设置为在顶部图像和下面的标签堆栈之间保持很小的距离。
问题是当加载一个未知的图片尺寸到 UIImage 时,高度会改变,但是后面的标签没有下推,被图片覆盖了。
我试图删除 UIImageView 的设置高度,但 XCode 不允许。
我通过将显式 UIImageview 高度约束的优先级降低到 1 解决了这个问题。
之后,标签在 ViewController 中向下移动,图像和它们之间的空间均匀,正如预期的那样。
【讨论】:
以上是关于sizeToFit 和约束的主要内容,如果未能解决你的问题,请参考以下文章