少なくともコードでこれを行うことができます。私は、Interface Builder を捨てて、とにかくコードで進めるタイプです。制約の追加や調整に関しては、IB が邪魔になることがよくあります。UIToolbar
カスタムサブクラスの-initWithFrame:
メソッドで行ったことは次のとおりです。
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self addSubview:self.label];
[self addConstraint:[NSLayoutConstraint
constraintWithItem:self.label
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self
attribute:NSLayoutAttributeCenterX
multiplier:1 constant:0]];
[self addConstraint:[NSLayoutConstraint
constraintWithItem:self.label
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:self
attribute:NSLayoutAttributeCenterY
multiplier:1 constant:0]];
}
return self;
}
そして、私は可能な限り遅延読み込みが好きなので、これが私のself.label
インスタンス変数です ([self addSubview:self.label]
上記のメッセージが表示されたときに呼び出されます)。
- (UILabel *)label {
if (_label) return _label;
_label = [UILabel new];
_label.translatesAutoresizingMaskIntoConstraints = NO;
_label.textAlignment = NSTextAlignmentCenter;
return _label;
}
私にはうまくいくようです。ただし、追加していないUIBarButtonItems
ので、走行距離はさまざまです。