为什么“sizeToFit”是这段代码中需要调用吗?

发布于 2024-10-21 07:03:08 字数 872 浏览 2 评论 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
}

Anyone able to highlight why the "[aLabel sizeToFit]" line is required in this code below, taken from here.

That is, the CGRect created has already been sized based on the text font size, so why would the sizeToFit be required? Or is it because whilst they calculated the correct CGRect size they actually didn't set the pre-agreed font (system font) to the UILabel yet? (and therefore effectively called sizeToFit instead of setting the font)

- (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
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

獨角戲 2024-10-28 07:03:08

来自文档:

当你需要的时候调用这个方法
调整当前视图的大小,使其
使用最合适的量
空间。特定 UIKit 视图调整大小
自己按照自己的
内部需求。在某些情况下,如果
视图没有超级视图,它可能
将自身大小调整到屏幕边界。
因此,如果您想要给定视图的大小
本身到它的父视图,你应该
之前将其添加到父视图中
调用此方法。

选择适合您情况的正确选项。

From docs:

Call this method when you want to
resize the current view so that it
uses the most appropriate amount of
space. Specific UIKit views resize
themselves according to their own
internal needs. In some cases, if a
view does not have a superview, it may
size itself to the screen bounds.
Thus, if you want a given view to size
itself to its parent view, you should
add it to the parent view before
calling this method.

Choose the right one, that is appropriate for your case.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文