如何编写自定义UILabel类

时间:2016-01-04 07:30:58

标签: ios objective-c uilabel

在我的项目中,每个屏幕都有大量UILabels可用,这就是为UILabel创建一个单独的类的原因,我想在该类中设置所有标签属性。

但标签属性和标签也没有添加到我的MainViewController

我的代码:

CustomLabel:

#import "CustomLabel.h"

@implementation CustomLabel

- (id) init {
    self = [super init];
    if(self){

        [self setupUI];
    }
    return self;
}

- (void)setupUI {

    [self setBackgroundColor:[UIColor redColor]];
    [self setTextColor:[UIColor blackColor]];
}

MainViewController:

#import "MainViewController.h"
#import "CustomLabel.h"

@interface MainViewController ()
{
    CustomLabel * mainLabel;
}

@end

@implementation SampleViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    mainLabel = [[CustomLabel alloc]initWithFrame:CGRectMake(50, 150, 100, 35)];
    [self.view addSubview:mainLabel];
}

@end

2 个答案:

答案 0 :(得分:4)

awakeFromNib如果你只是自己分配/初始化它就不会被调用,你需要将[self setupUI];放在你应该覆盖的init方法中

- (id) initWithFrame:(CGRect)frame {
   self = [super initWithFrame:frame];
   if(self){

      [self setupUI];
   }
   return self;
}

答案 1 :(得分:1)

如果要检查标签,请成功添加标签,然后为其设置一些文字。

我认为你没有为该标签设置任何View,所以awakeFromNib不会在这里调用 为此你必须在layoutSubviews方法中编写代码

#import "CustomLabel.h"

@implementation CustomLabel

-(void)layoutSubviews
{
    [self setupUI];
}

- (void)setupUI {

    [self setBackgroundColor:[UIColor redColor]];
    [self setTextColor:[UIColor blackColor]];
}

@end