У меня есть следующий код:
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];
выполнит свою работу, верно?
В 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)
}
}
}