2013-02-06 30 views
6

Tôi có bảng phân cảnh được tạo bằng Bố cục tự động. Trong bảng phân cảnh đó, tôi đang nhúng một lớp con UIViewController (ButtonGridViewController) vào một số vị trí, mỗi vị trí có kích thước khác nhau. ButtonGridViewController Chế độ xem được xác định bằng xib.iOS: Bố cục tự động vs autoresizingMask - thay đổi kích thước toàn bộ chế độ xem để lấp đầy?

Điều tôi cần là toàn bộ chế độ xem của ButtonGridViewController chỉ đơn giản là tỷ lệ để lấp đầy chế độ xem mà tôi đang nhúng vào. Với phương pháp struts-and-spring cũ, điều này là tầm thường - chỉ cần đặt tất cả các bản xem lại để thay đổi kích thước theo cả hai hướng, và thì đấy, miếng bánh.

Làm cách nào để thực hiện điều tương tự bằng cách sử dụng các ràng buộc? Đối với những gì nó có giá trị, xib chỉ chứa một cái nhìn chính, đó là hình chữ nhật, và có 4 subviews - mỗi một nút - sắp xếp trong một lưới 2x2. Tôi muốn tất cả mọi thứ, bao gồm các nút và khoảng cách, để mở rộng quy mô và/hoặc kéo dài để lấp đầy khung nhìn nó đang đi vào.

Cảm ơn!

+0

Ý anh là gì bằng cách nhúng? Bạn có đang sử dụng chế độ xem vùng chứa không? – rdelmar

+0

Chế độ xem vùng chứa trong một trường hợp; trong tất cả các trường hợp khác, chỉ cần instantiating các ButtonGridViewController và thêm xem của nó như là một subview cho một UIView hiện có lập trình. – DanM

+0

Nếu không có lý do gì khiến bạn không thể sử dụng chế độ xem vùng chứa cho tất cả, điều đó sẽ giúp bạn dễ dàng hơn nhiều. Chế độ xem sẽ tự động khớp với chế độ xem vùng chứa. – rdelmar

Trả lời

10

Để thực hiện được điều tương tự sử dụng các ràng buộc bạn cần phải đặt hàng đầu, đuôi, không gian trên và dưới để superview để 0. Xem dưới đây:

//load the ButtonGridViewController from a xib 
[[NSBundle mainBundle] loadNibNamed:@"..." owner:self options:nil]; 

//get the view add it 
[self.view addSubView:self.myGridView]; 

//turn off springs and struts 
[self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; 

//add constraints to fill parent view 
NSArray *arr; 

//horizontal constraints 
arr = [NSLayoutConstraint constraintsWithVisualFormat:@"|[vw]|" 
               options:0 
               metrics:nil 
               views:@{@"vw":self.myGridView}]; 
[self.view addConstraints:arr]; 

//vertical constraints 
arr = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[vw]|" 
               options:0 
               metrics:nil 
                views:@{@"vw":self.myGridView}]; 
[self.view addConstraints:arr]; 
+1

Điều tương tự cũng không hiệu quả đối với tôi. Tôi có cùng một kịch bản nơi tôi đang thêm một chế độ xem phụ vào chế độ xem của mình. Chế độ xem nằm trong Storyboard và subview nằm trong .xib. Khi tôi thêm các ràng buộc theo chương trình như trên, tôi nhận được các ràng buộc đồng thời và nó phá vỡ ... –

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