2011-10-18 26 views
5

Tôi có một số UIViewControllers, được nạp thông qua UINavigationController, nơi tôi ghi đè loadView và thiết lập chế độ xem tùy chỉnh để hiển thị. Tôi gặp vấn đề với việc thiết lập các khung của một số các bản xem trước, và có thể chính bản thân khung nhìn đó. Tôi nghĩ rằng hoặc UINavigationController hoặc UIViewController có thể ép buộc nó là view để lấp đầy màn hình khi được hiển thị.UIViewController hoặc UINavigationController có đặt kích thước của chế độ xem của nó không?

Tôi tự hỏi nếu và/hoặc khi kích thước của chế độ xem được đặt. Và nếu nó đang xảy ra, là nó thiết lập khung của khung nhìn, hoặc làm theo cách khác.

Cảm ơn.

Cập nhật: Tôi vừa nhận thấy trong khi làm việc thông qua này là tôi làm cho một UINavigationController mới, với phương pháp loadView này:

- (void)loadView 
{ 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 10.0f, 10.0f)]; 
    [view setBackgroundColor:[UIColor redColor]]; 
    self.view = view; 
    [view release]; 
} 

tôi nhận được một cái nhìn đỏ chiếm toàn bộ màn hình, ngoại trừ tình trạng thanh và tiêu đề. Khi nào quan điểm của tôi được thay đổi kích thước để lấp đầy màn hình? Và tôi nên sử dụng kích thước nào khi tạo chế độ xem?

Trả lời

3

Không gian khung cho UIViewControllers trở nên nhỏ hơn, vì UINavigationController điều chỉnh chế độ xem bằng cách thêm UINavigationBar, có kích thước 44,0f.

Nó được thay đổi kích cỡ vì bạn thay thế chế độ xem bằng self.view = view; Nếu bạn đã sử dụng addSubview: thay vào đó, nó sẽ giữ nguyên kích thước ban đầu. logancautrell giải thích khi nào và tại sao.

+0

Cảm ơn bạn đã làm rõ. Khi tải chế độ xem của tôi trong bộ điều khiển chế độ xem loadView, khi được đẩy qua UINavigationController, tôi có cần đặt khung làm CGRectMake (0.0, 0.0, 320.0, 416.0) không? Như trong tôi không cần phải bù đắp trong khung gốc y phối hợp cho UINavigationBar hoặc thanh trạng thái? – Ryan

+0

Phần dưới cùng của thanh điều hướng sẽ trở thành nguồn gốc X, Y mới cho các bộ điều khiển xem, bạn chỉ cần bù cho chiều cao đã điều chỉnh. Để đảm bảo kích thước sử dụng 'NSLog (@" wxh =% fx% f ", self.view.frame.size.width, self.view.frame.size.height);' – Wolfert

+0

Cảm ơn, làm rõ nó cho tôi. Tôi vẫn đang băn khoăn về thời điểm xem được thay đổi. Bởi vì ngay cả khi tôi thiết lập kích thước không chính xác trong loadView nó được thay đổi là kích thước chính xác. Tôi sẽ chấp nhận bạn trả lời, vì nó giúp tôi đi. Cảm ơn một lần nữa. – Ryan

9

UINavigationController sẽ tự động kích thước chế độ xem của ViewController khi được đẩy. Từ các tài liệu:

pushViewController: hoạt hình:

Đối tượng trong tham số viewController trở thành bộ điều khiển nhìn từ trên xuống trên menu ngăn xếp. Việc đẩy một bộ điều khiển xem sẽ dẫn đến hiển thị khung nhìn mà nó quản lý. Cách hiển thị chế độ xem đó được xác định bởi tham số hoạt ảnh. Nếu tham số hoạt ảnh là YES, chế độ xem được chuyển thành vị trí; nếu không, chế độ xem được hiển thị đơn giản tại chỗ. Chế độ xem được tự động thay đổi kích thước để vừa với thanh điều hướng và thanh công cụ (nếu có) trước khi nó được hiển thị.

Nếu bạn muốn hiển thị chế độ xem nhỏ hơn thì bạn sẽ phải tạo vùng chứa và đặt con là chế độ xem VC của bạn, đặt kích thước theo cách thủ công. Mặt nạ tự động hóa có thể phải được đặt đúng cách, tùy thuộc vào cách bạn tạo chế độ xem.

+0

Cảm ơn, đây phải là tài liệu tôi đọc một lần nhưng quên chính xác những gì/nơi tôi đọc nó. – Ryan

+2

Có cách nào để buộc bộ điều khiển điều hướng điều chỉnh kích thước của bộ điều khiển xem con sau khi thao tác đẩy không? Tôi đang thay đổi chiều cao của bộ điều khiển điều hướng nhưng nó không tự động điều chỉnh nội dung của nó vì một số lý do. – devios1

+0

Tôi cũng đang gặp sự cố trong đó trình điều khiển điều hướng không thay đổi kích thước của bộ điều khiển chế độ xem con khi bạn xoay thiết bị trong khi chuyển đổi. – AdamPro13

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