Вы можете сделать это по коду, по крайней мере; Я являюсь типом, чтобы отказаться от интерфейса 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
, хотя, так что ваш пробег меня меняется.
я сделал некоторые вещи, как это раньше, хотя я в основном просто жду изменения размера представления, а затем соответствующим образом обновляю рамку целевого представления. Это всегда вариант, если, оказывается, нет способа сделать это автоматически. – Brian
Вы не могли бы разместить изображение? –
Я бы хотел, но я закончил тем, что отказался от AutoLayout и вернулся к использованию autoresizingmasks. Он отлично работает с этой моделью. – outerstorm