如何使用自动布局编写自定义UILabel类

时间:2016-01-04 08:54:14

标签: ios objective-c uilabel ios-autolayout

嗨,我对ios很新。我正在创建一个项目,我必须处理各种屏幕上的标签数量,所以我必须创建一个从UILabel继承的独立类。我在该类中设置了所有标签属性。

但是当我运行应用程序时。它显示例外:

'NSInvalidArgumentException', reason: '*** +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:] 

我的代码: -

CustomLabel: -

#import "CustomLabel.h"

@implementation CustomLabel

+(id)getLabel {

    CustomLabel *menu;
    menu = [[self alloc] init];
    [menu setBackgroundColor:[UIColor redColor]];
    [menu setTextColor:[UIColor blackColor]];
     menu.text = @"hjh";

    [menu mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(@200);
        make.height.equalTo(@30);
        make.left.equalTo(@10);
        make.right.equalTo(@-10);
    }];

    return menu;
}

MainViewController: -

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


@interface MainViewController ()
{
    CustomLabel * mainLabel;
}

@end

@implementation MainViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    mainLabel = [CustomLabel getLabel];
    [self.view addSubview:mainLabel];
}

@end

1 个答案:

答案 0 :(得分:0)

在将标签添加到视图后,应进行mas_makeConstraints调用。从+(id)getLabel删除此调用,并在创建标签时添加。

CustomLabel* mainLabel = [CustomLabel getLabel];
[self.view addSubview:mainLabel];
[mainLabel mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(@200);
    make.height.equalTo(@30);
    make.left.equalTo(@10);
    make.right.equalTo(@-10);
}];