Пользовательский шрифт на названии 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