任何人都可以在下面的代码中突出显示为什么“[aLabel sizeToFit]”行,取自here。
也就是说,创建的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
}
答案 0 :(得分:2)
来自docs:
如果需要,请调用此方法 调整当前视图的大小以便它 使用最合适的量 空间。特定的UIKit视图调整大小 自己照自己的意思 内部需求。在某些情况下,如果一个 视图没有超视图,它可能 大小本身到屏幕边界。 因此,如果您希望给定视图的大小 你应该在它的父视图中找到它自己 之前将其添加到父视图中 调用这种方法。
选择适合您案例的正确答案。