почему в этом коде требуется вызов sizeToFit? - PullRequest
0 голосов
/ 10 марта 2011

Любой, кто в состоянии выделить, почему строка «[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
}

1 Ответ

2 голосов
/ 10 марта 2011

Из документов:

Вызывайте этот метод, если вы хотите изменить размер текущего представления, чтобы оно использовало наиболее подходящий объем пространства.Конкретные представления UIKit изменяют свой размер в соответствии со своими внутренними потребностями.В некоторых случаях, если представление не имеет суперпредставления, оно может масштабироваться до границ экрана.Таким образом, если вы хотите, чтобы данное представление соответствовало его родительскому представлению, вы должны добавить его в родительское представление перед вызовом этого метода.

Выберите правильное, подходящее для вашего случая.

...