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