使用Masonry将视图置于其中

Tia*_*oso 6 ios masonry-ios-osx

我正在尝试Masonry用于iOS.我有一个标签和一个视图.

我想将标签添加到视图中并在视图中水平居中.

但是,我用砌体创建的约束无法正常工作.

UILabel *a = [UILabel new];
a.text = @"Hi";
a.textColor = [UIColor blackColor];
[a sizeToFit];

UIView *b = [UIView new];
b.frame = CGRectMake(0, 0, CGRectGetWidth(a.frame) + 18.0f, 19.0f);
[b addSubview:a];

[a mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerX.equalTo(b.mas_centerX);
}];
Run Code Online (Sandbox Code Playgroud)

如何使用Masonry正确地将视图置于其中"superview"?

joe*_*ern 7

如果添加顶部约束,它可以工作:

[a mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(@0)
    make.centerX.equalTo(b);
}];
Run Code Online (Sandbox Code Playgroud)

但是你可以一直自动布局并摆脱设置framesizeToFit东西:

UILabel *a = [UILabel new];
a.text = @"Hi";
a.textColor = [UIColor blackColor];

UIView *b = [UIView new];
[b addSubview:a];

[a mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(@0);
    make.centerX.equalTo(b);
}];

[b mas_makeConstraints:^(MASConstraintMaker *make) {
    make.width.equalTo(a).with.offset(18)
    make.height.equalTo(a)
}];
Run Code Online (Sandbox Code Playgroud)