Đăng lần đầu tiên trên tràn ngăn xếp.UIView và AutoresizingMask bị bỏ qua
Tôi đã dành hàng giờ cọ rửa trên nhiều tìm kiếm của Google và có, tại thời điểm này, thực tế đã ghi nhớ tài liệu tham chiếu lớp UIView và UIViewController. Bất kể tôi làm gì, ứng dụng của tôi đều bỏ qua những nỗ lực của tôi để thay đổi kích thước quan điểm của tôi về thay đổi định hướng (hoặc bất kỳ sửa đổi kích thước khung hình nào khác cho vấn đề đó.)
Không có ngòi bút hoặc xib; Tôi đang xây dựng tất cả các quan điểm của tôi và viewcontrollers lập trình, và họ (các viewcontrollers) là tất cả các lớp con của một trong ba lớp con UIViewController tùy chỉnh mà tôi đã tạo ra. Những lớp học siêu có các dòng sau trong loadView của họ: Phương pháp ...
[self setView:[[[UIView alloc] initWithFrame:[self viewFrame]] autorelease]];
[[self view] setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[[self view] setAutoresizesSubviews:TRUE];
Trong tất cả các phương pháp setter thích hợp (bất cứ nơi nào tôi thêm một subview nói cách khác) Tôi lặp lại các bước của việc áp dụng autoresizingMask. Dường như không có vấn đề gì tôi làm, kết quả luôn luôn giống nhau - tôi nhấp vào xây dựng, nhấp vào gỡ lỗi, đợi ứng dụng khởi chạy, xoay thiết bị và ưu tiên! Chế độ xem quay nhưng không đổi kích thước.
Tôi thiếu gì ở đây? Nó có thể là một cái gì đó hiển nhiên rằng tôi chỉ không nhìn thấy. Bất kỳ trợ giúp nào thực sự được đánh giá cao, cảm ơn trước.
Ghi đè -setFrame: là một cách khá đáng tin cậy để thấy rằng lượt xem đã thay đổi kích thước. – aksommerville
Ồ vâng, chắc chắn! Tôi sử dụng kỹ thuật đó tất cả thời gian khi gỡ lỗi giữ lại số lượng, nhưng tôi thường bỏ qua làm điều đó trong các tình huống khác như thế này. (Làm thế nào rõ ràng evasive rõ ràng có thể được.) Để làm rõ bình luận của bạn cho người khác, điều này là đề cập đến overriding -setFrame để nhổ lên một số NSLog cho bạn biết tên của khung nhìn và một số giá trị khung. (Đừng quên gọi triển khai của siêu nếu bạn thử điều này.) – quickthyme
Ngoài ra, tôi sẽ không sử dụng phương pháp đó cho bất kỳ thứ gì khác. Tôi cũng sẽ làm cho dure để vô hiệu hóa ghi đè trước khi phát hành mã như sản xuất. – quickthyme