Клиент хочет, чтобы я сделал что-то, я только что проверил, и я совершенно уверен не возможный. Он попросил помещать текст на Кнопку (UIButton). (Конфигурация Состояния по умолчанию), И то, когда пользователь нажимает его текст, должно увеличиться. (Конфигурация состояния Highligted) я проверил выбор Конфигурация состояния Highligted и затем изменил размер текста в Интерфейсном Разработчике, но я не работал. Текст, измененный для Конфигурации Состояния по умолчанию также. Скажите мне, если существует какой-либо способ сделать это.
Спасибо!
Taimur
Возможно, вы не сможете сделать это в 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];
}
На самом деле это не так уж и сложно. Вам нужно создать два 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.
Это должно дать вам кнопку, размер которой изменяется от центра, а не просто изменение размера.
Итак, код не должен быть идеальным. Это просто общая ИДЕЯ того, что вы здесь делаете. Я думаю, что это отличный кандидат для повторного использования кода, объединив их в одну функцию и передав нужный размер текста.Просто мне самому не хотелось делать это;)