6

私はMasonryiOSに使用しようとしています。ラベルとビューがあります。

ビューにラベルを追加し、ビューの水平方向の中央に配置したいと考えています。

ただし、石積みで作成した拘束は正しく機能しません。

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);
}];

Masonry を使用してビューをその「スーパービュー」内に正しく配置する方法は?

4

1 に答える 1

7

上部の制約を追加すると機能します。

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

frameただし、すべて自動レイアウトして、設定などを取り除くことができますsizeToFit

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)
}];
于 2015-10-04T18:01:12.203 に答える