Изменение размера текста на UIButton

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

Спасибо!

Taimur

5
задан Taimur Ajmal 27 May 2010 в 15:40
поделиться

2 ответа

Возможно, вы не сможете сделать это в 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];
}
10
ответ дан 18 December 2019 в 09:05
поделиться

На самом деле это не так уж и сложно. Вам нужно создать два IBAction в вашем классе: onTouchDown и onTouchUp. Создайте IBOutlet для своей кнопки. Затем перейдите в Interface Builder и подключите кнопку к 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.

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

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

1
ответ дан 18 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: