Tôi có một ứng dụng với một UITabController
và mỗi tab là UINavigationController
. Gốc của một trong số UINavigationControllers
của tôi là UIViewController
.Đặt và định kích thước của các bản phụ trong một UIViewController
Bên trong quan điểm cho rằng quan điểm điều khiển, tôi muốn bố trí một số subviews, nhưng tôi bối rối như đến nơi & làm thế nào để đặt chúng ra trong một cách mà sẽ có độ phân giải độc lập (tức là không hardcode các giá trị như 320px, 480, 44px, v.v.)
Khi chế độ xem được tải đầy đủ và hiển thị trên iPhone dọc, chiều cao của nó sẽ là 367px = 480 - 20 (thanh trạng thái) - 44 (thanh điều hướng) - 49 (thanh tab).
Bên trong trình điều khiển chế độ xem, tôi hiện đang tạo tất cả các bản xem trước của mình trong phương thức viewDidLoad
. Tuy nhiên, có vẻ như trong phương thức này, chiều cao hiện tại của khung nhìn là 460px (self.view.bounds.size.height
). Vì vậy, khi thiết lập các bản xem trước của tôi, tôi không thể tính toán đúng kích cỡ của bất kỳ thứ gì.
Trong phương pháp viewWillAppear:
, quan điểm không biết đó là kích thước phù hợp, nhưng điều đó có nghĩa là thiết & tính khung của subview mỗi lần xem sẽ xuất hiện (ví dụ như thay đổi tab hoặc popping khỏi tầm nhìn con điều khiển trên menu ngăn xếp.
là cách duy nhất để làm điều này đúng cách để bố trí trong viewWillAppear:
?
tôi đã cố gắng sử dụng các thuộc tính autoresizing (mẹ của autoresizesSubviews
& autoresizingMask
) nhưng họ dường như không làm việc ở tất cả !? Do những chỉ có hiệu lực sau khi xem là tất cả các thiết lập và sau đó nó được thay đổi kích cỡ (bằng tay/định hướng thay đổi?).
Tôi rất biết ơn nếu ai đó có thể cho tôi biết tại sao tính năng tự động không hoạt động, và cách tốt nhất để loại bỏ mọi thứ bằng cách không mã hóa bất kỳ kích thước nào.
Làm rõ nhanh, UIViewController không có, cũng không gọi layoutSubviews. Đây là một phương pháp trên UIView. Tuy nhiên, bạn có thể tạo một phương thức có tên layoutSubviews và gọi phương thức đó từ viewWillAppear: – casademora
Không có "loadViews". Tôi nghĩ rằng bạn có nghĩa là "viewDidLoad", trong trường hợp đó nó đáng nói đến để phát hành những quan điểm trong viewDidUnload là tốt. – DougW
Có một phương thức loadView nhưng viewDidLoad thường là nơi thuận lợi nhất để thêm subviews –