1
NSLayoutconstraints를 프로그래밍 방식으로 내 뷰와 controller.topLayoutGuide & controller.bottomLayoutGuide에서 설정하는 데 문제가 있습니다. viewDidLoad에이 코드위쪽 및 아래쪽 레이아웃 가이드의 자동 레이아웃 문제
:
_mainView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:_mainView];
[self.view removeConstraints:self.view.constraints];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_mainView]-0-|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:NSDictionaryOfVariableBindings(_mainView)]];
id top = self.topLayoutGuide;
id bottom = self.bottomLayoutGuide;
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[top]-0-[_mainView]-0-[bottom]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(top, _mainView, bottom)]];
[self.view layoutSubviews];
결과가 있음 :
나는 상대적인 제약을 설정하면
(_mainView 어두운 회색 배경 색상을 갖는) superview에게 작동 :
_mainView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:_mainView];
[self.view removeConstraints:self.view.constraints];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_mainView]-0-|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:NSDictionaryOfVariableBindings(_mainView)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_mainView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_mainView)]];
[self.view layoutSubviews];
뷰 컨트롤러 계층이다 UITabBarController가 ->은 UINavigationController -> myViewController
이 해결!
[self.view removeConstraints:self.view.constraints];
내가
for(NSLayoutConstraint *c in self.view.constraints)
if(c.firstItem == _mainView || c.secondItem == _mainView)
[self.view removeConstraint:c];
으로 코드를 변경하고 일했다 :
오류였다. 어쨌든 감사합니다! ;)
해결! 오류는 "[self.view removeConstraints : self.view.constraints];"입니다. 대신 (self.view.constraints의 NSLayoutConstraint * c) if (c.firstItem == _mainView || c.secondItem == _mainView) [self.view removeConstraint : c]; " 그리고 효과가있었습니다. – user3522447