Имеют ли пользовательские настройки на UILabel смысл введения подкласса UILabel - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть ярлык, который я хочу использовать в нескольких местах.В нем нет ничего, кроме следующих пользовательских настроек

label.font = [UIFont fontWithName:@"Arial" size:12.0];
label.textAlignment = UITextAlignmentCenter;
label.backgroundColor = [UIColor clearColor];
label.userInteractionEnabled = YES;
label.textColor = [UIColor whiteColor];

Теперь мне интересно, нужно ли вводить подкласс (UILabel) специально для него?Так как он используется в нескольких местах, какой шаблон проектирования будет наилучшим для такого использования?

Ответы [ 2 ]

2 голосов
/ 26 декабря 2011

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

@interface UILabel (MyLabel)

+ (UILabel *)createMyLabelWithFrame;

@end

и в .m:

@implementation UILabel (MyLabel)

+ (UILabel *)createMyLabelWithFrame:(CGRect)frame {
  UILabel *label = [[UILabel alloc] initWithFrame:frame];
  label.font = [UIFont fontWithName:@"Arial" size:12.0];
  label.textAlignment = UITextAlignmentCenter;
  label.backgroundColor = [UIColor clearColor];
  label.userInteractionEnabled = YES;
  label.textColor = [UIColor whiteColor];
  return label;
}
1 голос
/ 26 декабря 2011

Я бы использовал категорию или просто базовую функцию в некотором доступном классе.Подклассы создают значительно больше работы.т.е. постоянно приходится менять класс в IB или менять весь код по всему проекту.

Категория может выглядеть так:

@implementation UILabel (FormatMyLabels)
-(void)useMySpecialFormatting{
    self.font = [UIFont fontWithName:@"Arial" size:12.0];
    self.textAlignment = UITextAlignmentCenter;
    self.backgroundColor = [UIColor clearColor];
    self.userInteractionEnabled = YES;
    self.textColor = [UIColor whiteColor]; 
}
@end

И вы будете использовать ее следующим образом:

[self.myFirstLabel useMySpecialFormatting];

Функция может выглядеть следующим образом:

-(void)useSpecialFormattingOnLabel:(UILabel *)label{
    label.font = [UIFont fontWithName:@"Arial" size:12.0];
    label.textAlignment = UITextAlignmentCenter;
    label.backgroundColor = [UIColor clearColor];
    label.userInteractionEnabled = YES;
    label.textColor = [UIColor whiteColor];
}

И вы можете использовать это как:

[ClassOrInstanceWithFunction useSpecialFormattingOnLabel:self.myFirstLabel];

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