My UIViewController
tạo ra quan điểm của mình bằng cách ghi đè phương pháp loadView:chế AutoLayout cho một cái nhìn autoresizing tạo ra trong loadView ViewController của
- (void)loadView {
UIView *view = [[UIView alloc] init];
view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
self.view = view;
}
Bây giờ tôi muốn chuyển sang AutoLayout và do đó thêm một
view.translatesAutoresizingMaskIntoConstraints = NO;
đến phương thức loadView. Bây giờ tôi phải chỉ định các ràng buộc giống nhau được tự động phát trước đó. Cách tiếp cận của tôi là ghi đè lên updateViewConstraints với
- (void)updateViewConstraints {
if (0 == [[self.view constraints] count]) {
NSDictionary* views = @{@"view" : self.view};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[view]|" options:0 metrics:0 views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]|" options:0 metrics:0 views:views]];
}
[super updateViewConstraints];
}
Nhưng tôi nhận được một ngoại lệ vì tôi nghĩ rằng loại này hạn chế nên đi với quan điểm siêu:
*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to install constraint on view. Does the constraint reference something from outside the subtree of the view? That's illegal.
Vì vậy, làm thế nào để các contraints đúng phải tìm như?
Nhưng tôi rõ ràng không muốn thêm chế độ xem dưới dạng chế độ xem phụ, vì sau đó tôi sẽ có chế độ xem không sử dụng ở giữa mà tôi không cần. –
Chi phí xem thêm, không sử dụng là bao nhiêu? Tôi chỉ hỏi ở đây, đó là một câu hỏi dành cho bạn. Bạn đã thử bỏ các ràng buộc? Những hạn chế nào đi kèm với bộ điều khiển xem mặc định thông qua Bảng phân cảnh? – James
Các chế độ xem được tạo theo chương trình, do đó không có gì từ Bảng phân cảnh. Xem thêm lãng phí thời gian và bộ nhớ cpu. –