Стилизация UIButtons - подкласс? - PullRequest
4 голосов
/ 23 февраля 2012

У меня есть четыре кнопки, которые будут одинаково стилизованы в одной и той же сцене (используя раскадровку). Это простой стиль, который потребует переопределения некоторых из значений по умолчанию свойства, но кажется ненужным повторением, чтобы установить это для каждой отдельной кнопки. Я думал, что создам подкласс, но во многих прочитанных мной постах (особенно по stackoverflow) предостерегаю против выполнения этого для UIButton (а попытки, которые я делал, не увенчались успехом).

Просто надеюсь получить общий указатель на то, что считается лучшим подходом для этого. Спасибо за любой совет.

Ответы [ 2 ]

6 голосов
/ 23 февраля 2012

Если вы ориентируетесь только на iOS 5, я настоятельно рекомендую посмотреть Сессия 114 - Настройка внешнего вида элементов управления UIKit Требуется вход для разработчика из Видео сессий WWDC 2011 .

Подробно объясняется стилизация приложения.


Я хочу изменить идею yujis: используйте категорию на UIButton для установки кнопки

.ч.

@interface UIButton (MyStyling)
-(void)configureMyButtonStyle;
//other methods for more fine-grained control
@end

.m

@implementation UIButton (MyStyling)
-(void)configureMyButtonStyle
{
    [self setBackgroundColor:[UIColor colorWithRed:…]];
    [self setTitleColor: [UIColor colorWithRed:…] forState: UIControlStateNormal];
    //…

}
@end

Теперь вы можете звонить [aButton configureMyButtonStyle]

Конечно, вы также можете анализировать некоторые параметры, чтобы различать несколько стилей.

-(void)configureMyButtonForStyle:(NSInteger)style
{
    if(style == 1){
        //…
    } else if(style == 2) {
       //..
    } else {
       //fallback style 
    }
}

использование:

[aButton configureMyButtonForStyle:1];
4 голосов
/ 23 февраля 2012

Подклассы здесь кажутся излишними. Вы можете просто написать метод, который устанавливает свойства так, как вы хотите, в одном из ваших контроллеров, и вызывать его для каждого UIButton.

Или вы всегда можете просто настроить одну кнопку так, как вы хотите в IB, а затем скопировать и вставить три раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...