적어도 코드에서이를 수행 할 수 있습니다. 필자는 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 addSubview:self.label]
은 위의 메세지를 취득했을 때에 불려) 내 self.label
인스턴스 변수입니다.
- (UILabel *)label {
if (_label) return _label;
_label = [UILabel new];
_label.translatesAutoresizingMaskIntoConstraints = NO;
_label.textAlignment = NSTextAlignmentCenter;
return _label;
}
나를 위해 일하는 것 같습니다. 나는 어떤 UIBarButtonItems
도 추가하지 않고있다. 그래서 당신의 주행 거리가 다양하다.
내가 전에 다음과 같은 몇 가지 물건을했습니다 이러한 솔루션을 찾고있는 동안 두 질문에 stumbbled 기본적으로 뷰의 크기가 변경 될 때까지 기다렸다가 그에 따라 대상 뷰의 프레임을 업데이트합니다. 그것이 자동적으로 할 수있는 방법이 없다는 사실이 밝혀지면 그것은 항상 선택 사항입니다. – Brian
이미지를 게시 할 수 있습니까? –
그래도 AutoLayout을 버리고 자동 크기 조정 마스크를 사용하는 것으로 끝났습니다. 그것은 그 모델을 사용하여 훌륭하게 작동합니다. – outerstorm