Пользовательский шрифт на названии UIbutton, обрезанный поверх слова
Я загрузил пользовательский шрифт и применил этот шрифт в заголовке UIbutton, используя следующий код
videoButton.titleLabel.font = [UIFont fontWithName:@"LaurenScript" size:20];
Проблема заключается в том, что заголовок обрезается в верхней части первой буквы (см. фото ниже). Я попробовал тот же шрифт в UIlabel, и он отлично работает, поэтому это не проблема с шрифтом. Я также попытался изменить прямоугольник с помощью
[videoButton.titleLabel setFrame:CGRectMake(0, 0, 300, 600)];
но это ничего не делало.
Кто-нибудь знает, как я могу решить эту проблему?
Приветствия
![enter image description here]()
Ответы
Ответ 1
У меня была аналогичная проблема, когда диарезис был отрезан поверх заголовка.
Я создал подкласс UIButton и использовал этот код для устранения проблемы:
-(void)layoutSubviews
{
[super layoutSubviews];
CGRect frame = self.titleLabel.frame;
frame.size.height = self.bounds.size.height;
frame.origin.y = self.titleEdgeInsets.top;
self.titleLabel.frame = frame;
}
Ответ 2
Выберите кнопку в построителе интерфейса и установите флажок для установки панели вертикального выравнивания в секции управления. Ниже приведен пример:
![введите описание изображения здесь]()
Ответ 3
Не уверен, что это все еще проблема для всех, но я обнаружил, что (с использованием пользовательского шрифта) вышеупомянутые решения не в конечном итоге устранили проблему, особенно для пользовательского UIButton
, созданного исключительно программно.
Вот как мне удалось исправить эту проблему, с одной линией, в частности, которая разрешила проблему отсечения:
UIButton *button = [[UIButton alloc] init];
button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"Nice!" forState:UIControlStateNormal];
[button setFont:[UIFont fontWithName:<CUSTOM FONT NAME> size:buttonWidth/3.0f]];
button = CGRectMake(0, 0, <WIDTH>, <HEIGHT>);
Здесь была строка, разрешающая обрезку:
[button setContentVerticalAlignment:UIControlContentVerticalAlignmentFill];
Надеюсь, это поможет любому, кто все еще застрял. Счастливое кодирование!
Ответ 4
Я пробую это в swift 2.1, я адаптирую этот код из Antoine. Это может быть не очень хороший код, но сейчас он решает мою проблему. Вы должны сделать это лучше для себя.
import UIKit
class CustomUIButton: UIButton {
override func layoutSubviews() {
if var titleFrame : CGRect = titleLabel?.frame{
titleFrame.size = self.bounds.size
titleFrame.origin = CGPointZero
self.titleLabel!.frame = titleFrame
self.titleLabel!.textAlignment = .Center
}
}
}
Ответ 5
Есть это (печальное) решение: fooobar.com/questions/349217/...
У меня аналогичная проблема. Кажется, что titleLabel просто очень неконтролируема, и чтобы получить контроль, вам нужно ввести подпрограмму UILabel на кнопку... Мне грустно: (
Ответ 6
имела такую же проблему, используя кнопку с изображением и текстом с пользовательским шрифтом.
Все должно было быть выровнено по центру вертикально. И изображение не растянулось.
это сработало для меня.
btn.contentVerticalAlignment = .fill
btn.contentMode = .center
btn.imageView?.contentMode = .scaleAspectFit