Изменение размера текста на кнопке UIB - PullRequest
5 голосов
/ 27 мая 2010

Клиент хочет, чтобы я что-то сделал, я только что проверил и уверен, что это невозможно. Он попросил поместить текст на кнопку (UIButton). (Конфигурация состояния по умолчанию) И когда пользователь нажимает на него, текст должен увеличиться. (Highligted State Configuration) Я проверил, выбрав Highligted State Configuration, а затем изменил размер текста в Интерфейсном Разработчике, но я не работал. Текст также изменился для конфигурации состояния по умолчанию. Скажите, пожалуйста, есть ли способ сделать это.

Спасибо!

Теймур

Ответы [ 3 ]

10 голосов
/ 27 мая 2010

Возможно, вы не сможете сделать это в IB, но вы, безусловно, можете сделать это с помощью пары действий. Я предполагаю, что выделенное состояние будет активным только при нажатии кнопки. Вы можете изменить этот код, если это не так (чтобы вернуть состояние в нормальное состояние, когда выделенное состояние заканчивается).

- (IBAction)buttonDown:(id)sender {
    UIButton *button = (UIButton *)sender;
    button.titleLabel.font = [UIFont boldSystemFontOfSize:18.0];
}

- (IBAction)buttonUp:(id)sender {
    UIButton *button = (UIButton *)sender;
    button.titleLabel.font = [UIFont boldSystemFontOfSize:15.0];
}
7 голосов
/ 13 августа 2012
  btn.titleLabel.adjustsFontSizeToFitWidth = TRUE;

, поэтому автоматически настраивает размер текста в соответствии с шириной кнопки ......

1 голос
/ 27 мая 2010

Это на самом деле не так уж сложно сделать. Вам нужно создать два IBActions в вашем классе, onTouchDown и onTouchUp. Создайте IBOutlet для своей кнопки тоже. Затем перейдите к Интерфейсному Разработчику и подключите кнопку к IBOutlet и подключите действие для «Touch Down» к «onTouchDown», а действия для «Touch Up Inside» и «Touch Up Outside» к «onTouchUp».

onTouchDown - это место, где вы установите выделенный шрифт. onTouchUp - это место, где вы сбросите свою кнопку.

Ваш заголовочный файл будет выглядеть примерно так:

@interface TestViewController : UIViewController {
    UIButton *testButton;
}


@property (nonatomic, retain) IBOutlet UIButton *testButton;
- (IBAction)onTouchDown;
- (IBAction)onTouchUp;

Теперь внутри функции «onTouchDown» вот что вы собираетесь делать:

1) Сохранить текущие размеры кнопки

2) Изменить размер шрифта

3) Нажмите кнопку для автоматического изменения размера (ЭТО КЛЮЧ)

4) Центрировать кнопку на основе старого размера

У вас должна быть функция, которая будет выглядеть примерно так:

- (IBAction)onTouchDown:(id)sender
{
    CGRect oldBtnRect = testButton.frame;
    testButton.titleLabel.font = [UIFont systemFontOfSize:36];
    [testButton sizeToFit];
    testButton.frame = CGRectMake(testButton.frame.origin.x - ((testButton.frame.size.width - oldBtnRect.size.width)/2), testButton.frame.origin.y - ((testButton.frame.size.height - oldBtnRect.size.height)/2), testButton.frame.size.width, testButton.frame.size.height);
}

Обратите внимание, размер шрифта составляет 36.

В вашей функции подкраски это будет выглядеть примерно так:

- (IBAction)onTouchUp:(id)sender
{
    CGRect oldBtnRect = testButton.frame;
    testButton.titleLabel.font = [UIFont systemFontOfSize:15];
    [testButton sizeToFit];
    testButton.frame = CGRectMake(testButton.frame.origin.x - ((testButton.frame.size.width - oldBtnRect.size.width)/2), testButton.frame.origin.y - ((testButton.frame.size.height - oldBtnRect.size.height)/2), testButton.frame.size.width, testButton.frame.size.height);
}

Размер шрифта должен соответствовать шрифту по умолчанию. В этом случае я сделал это 15.

Это должно дать вам кнопку, которая изменяет размер от центра, а не просто изменяет размер.

Теперь код не должен быть идеальным. Это просто общая ИДЕЯ того, что вы здесь делаете. Я думаю, что это отличный кандидат для повторного использования кода, объединяя их в одну функцию и передавая нужный размер текста. Я просто не хотел делать это сам;)

...