2010-09-23 37 views
6

Tôi đã thiết lập chế độ xem trong viewDidLoad. Tất cả các khung khác nhau và như vậy của các bản xem trước đã được xác định tương ứng với self.view. Do đó, không có vấn đề gì kích thước self.view là các bản xem trước sẽ luôn thu nhỏ hoặc mở rộng để vừa với (như nó đã).chế độ xem "làm mới" trên xoay thiết bị

Vì vậy, khi tôi xoay thiết bị, tôi muốn chế độ xem xoay (đủ dễ dàng với shouldAutoRotateToInterfaceOrientation:...) nhưng các bản xem trước vẫn giữ nguyên hình dạng.

Gọi [self viewDidLoad]; làm cho tất cả các yếu tố phù hợp, nhưng đặt một lớp mới lên trên bố cục trước đó (điều này hiển nhiên ...

Có cách nào để làm mới khung của các bản xem phụ hay gì đó không? Tôi không biết người khác phải thành thật. Tôi có phải đặt TẤT CẢ các quan điểm của mình vào tệp .h dưới dạng thuộc tính và thực hiện mọi thứ theo cách thủ công trên didRotate... không?

Trả lời

6

Bạn có ba lựa chọn:

  1. Nếu mặt nạ autoresizing là tốt, đủ để xác định vị trí quan điểm của bạn, giao autoresizing mặt nạ đúng cho mỗi subview khi bạn tạo chúng.

  2. Nếu mặt nạ tự động hóa không đủ, ghi đè willAnimateRotationToInterfaceOrientation:duration: và định vị lại các bản xem phụ của bạn theo phương pháp đó. Tôi sẽ tạo một phương thức tùy chỉnh lấy định hướng làm tham số và chịu trách nhiệm đặt ra tất cả các bản xem trước. Sau đó, bạn có thể gọi phương thức này từ willAnimateRotationToInterfaceOrientation:duration: và từ viewDidLoad.

  3. Bạn cũng có thể tạo một lớp con tùy chỉnh UIView và đặt chế độ xem của trình điều khiển chế độ xem một thể hiện của lớp này. Sau đó ghi đè layoutSubviews để định vị tất cả các bản xem phụ thuộc vào kích thước của chế độ xem. Cách tiếp cận này ngụ ý rằng chế độ xem tùy chỉnh của bạn quản lý các bản xem phụ của nó thay vì trình điều khiển chế độ xem.

+0

cảm ơn ... nhìn vào mặt nạ tự động hóa :) mà nên làm ngay bây giờ. :) –

+0

Chỉ cần thêm: Nếu bạn đang viết bộ điều khiển ngăn chứa UIView của riêng mình. Bạn có thể ghi đè lên 'willLayoutSubviews:' và 'didLayoutSubviews:' để được thông báo khi thiết bị đang quay. –

Các vấn đề liên quan