Отрегулируйте размер шрифта UIButton до ширины

У меня есть следующий код:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0.0, 0.0, 25, 25);

[[button layer] setCornerRadius:5.0f];
[[button layer] setMasksToBounds:YES];
[[button layer] setBackgroundColor:[[UIColor redColor] CGColor]];
[button.titleLabel setFrame:CGRectMake(0,0, 25, 25)];

[button setTitle:[NSString stringWithFormat:@"%@", [[topics objectAtIndex:indexPath.row] unread]] forState:UIControlStateNormal];

Проблема в том, что когда строка в тексте небольшая, она отображается нормально (1-2 цифры). Однако, когда он довольно длинный (цифра 3 ++), все, что я вижу, это красную кнопку без текста внутри. Как мне это настроить?

Я не думаю, что:

[button.titleLabel setAdjustsFontSizeToFitWidth:YES];

выполнит свою работу, верно?

114
задан Pang 21 May 2018 в 04:24
поделиться

1 ответ

В iOS 13.1 с Swift 5 я должен был обеспечить contentEdgeInsets также для корректировки дополнений.

extension UIButton {
    @IBInspectable var adjustFontSizeToWidth: Bool {
        get {
            return self.titleLabel?.adjustsFontSizeToFitWidth ?? false
        }
        set {
            self.titleLabel?.numberOfLines = 1
            self.titleLabel?.adjustsFontSizeToFitWidth = newValue;
            self.titleLabel?.lineBreakMode = .byClipping;
            self.titleLabel?.baselineAdjustment = .alignCenters
            self.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
        }
    }
}
0
ответ дан 24 November 2019 в 02:29
поделиться