0

任何人都可以在下面的代码中强调为什么需要“[aLabel sizeToFit]”行,取自此处

也就是说,创建的 CGRect 已经根据文本字体大小调整了大小,那么为什么需要 sizeToFit 呢?或者是因为虽然他们计算了正确的 CGRect 大小,但他们实际上还没有将预先约定的字体(系统字体)设置为 UILabel?(因此有效地称为 sizeToFit 而不是设置字体)

- (CGRect)RAD_frameForCellLabelWithSystemFontOfSize:(CGFloat)size {
    CGFloat width = [UIScreen mainScreen].bounds.size.width - 50;
    CGFloat height = [self RAD_textHeightForSystemFontOfSize:size] + 10.0;
    return CGRectMake(10.0f, 10.0f, width, height);
}

- (void)RAD_resizeLabel:(UILabel *)aLabel WithSystemFontOfSize:(CGFloat)size {
    aLabel.frame = [self RAD_frameForCellLabelWithSystemFontOfSize:size];
    aLabel.text = self;
    [aLabel sizeToFit];    // WHY IS THIS REQUIRED
}
4

1 回答 1

2

来自文档:

当您想要调整当前视图的大小以便它使用最合适的空间量时调用此方法。特定的 UIKit 视图会根据自己的内部需求自行调整大小。在某些情况下,如果视图没有超级视图,它可能会根据屏幕边界调整自身大小。因此,如果您希望给定视图根据其父视图调整自身大小,则应在调用此方法之前将其添加到父视图。

选择合适的,适合您的情况。

于 2011-03-10T02:04:38.253 回答