Tôi có một thiết lập khá cơ bản với một UINavigationController bên trong một UITabBarController. Tôi muốn lập trình bố trí quan điểm của rootViewController của navcontroller đó, nhưng khi tôi nhìn vào bên trong self.view.frame viewDidLoad, tôi có được điều này (trong cảnh quan, ví dụ):Tại sao tôi phải đặt khung của chế độ xem của tôi theo cách thủ công trong viewDidLoad?
1. view frame: {{20, 0}, {748, 1024}} // looks like an odd portrait mode
Sau đó, tôi dừng quay để Portrait, và tôi có được điều này:
2. view frame: {{0, 0}, {768, 911}}
sau đó, khi tôi quay trở lại phong cảnh, khung giờ này:
3. view frame: {{0, 0}, {1024, 655}}
Và các sự kiện autorotation tiếp theo sẽ lật ngược giữa các giá trị khung hình # 2 & # 3.
Để khắc phục sự kì quái của # 1, tôi đang làm điều này trong viewDidLoad:
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
self.view.frame = CGRectMake(0, 0, 768, 911);
} else {
self.view.frame = CGRectMake(0, 0, 1024, 655);
}
Tôi cảm thấy như tôi rõ ràng là thiếu một cái gì đó ở đây. Tại sao khung mặc định của chế độ xem không khớp với khung khi nó tự động quay về cùng một hướng? Khung xem có được đặt thành hướng ban đầu không? Rất bối rối ...
Tôi nên đề cập đến không có điều nào ở trên, kể cả hack kludgy của tôi, thay đổi mọi thứ một cách trực quan. Lý do tôi có hack là khi tôi bố trí các bài đánh giá của tôi vào chế độ xem này, chúng sẽ dựa trên vị trí tôi mong đợi, đó là góc trên bên trái ngay dưới thanh điều hướng.
Tôi đang làm gì sai?
UPDATE: tắt tất cả những thứ autosizing về những thay đổi quan điểm dẫn # 1 là:
view frame: {{0, 0}, {748, 1024}}
Đó có vẻ hơi nhỏ xíu gần hơn, nhưng vẫn không phù hợp với # 3.
Tôi có một câu hỏi về số câu trả lời của bạn 3. Tôi đã thử thiết lập xem trong tập tin nib, nhưng trong viewDidLoad khung nhìn của tôi không phải là những gì tôi đã được thiết lập trong Nib. Tôi đã đăng câu hỏi của tôi ở đây http://stackoverflow.com/q/7266177/147564 – sarunw
Lạ lẫm, chế độ xem của tôi không có khung chính xác cho đến khi khung 8 'viewDidAppear: ' –
có sẵn trong' '' viewDidLayoutSubviews''' trong iOS 5.0+ – Jon