2010-08-19 7 views
26

Tôi có một cái gì đó như thế này:Cách thêmSubview vào vị trí?

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
[mainCanvas addSubview: myViewController.view]; 
self.view = mainCanvas; 

Nó sẽ được bổ sung vào vị trí (0, 0), nhưng tôi muốn thêm nó ở (0, 100) hoặc ở một nơi khác. Làm thế nào tôi có thể làm như vậy?

Trả lời

53

Something như thế này:

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
myViewController.view.frame = CGRectMake(0, 100, myViewController.view.frame.size.width, myViewController.view.frame.size.height); 
[mainCanvas addSubview: myViewController.view]; 
self.view = mainCanvas; 
+0

@applefreak khung * là * vị trí của chế độ xem trong hệ thống phối hợp của superview. Những gì bạn đang yêu cầu không có ý nghĩa. –

+0

Đây là cách gọn gàng nhất và thậm chí không yêu cầu bật dịch mặt nạ. Không thể tin được, trong trường hợp của tôi, '(0, 0, chiều rộng, chiều cao)' phải được khai báo rõ ràng vì nó không phải là hành vi mặc định. Khùng! – Angad

8

Đặt thuộc tính khung trên chế độ xem phụ.

+1

Có thể cung cấp mẫu không? – DNB5brims

12

Ngoài việc thiết lập frame thuộc tính, bạn cũng có thể thiết lập các center tài sản của một cái nhìn.

6

Đây là cách tốt nhất tôi đã tìm thấy để thêm một subView, như một màn hình tải hoặc một cái gì đó mà bạn muốn hiển thị cho dù bạn đang ở trong một UIView, UIScrollView, hoặc UITableView.

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
myViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 
[self.view addSubview:myViewController.view]; 
self.view.bounds = myViewController.view.bounds; 

này sẽ làm cho subview xuất hiện trên toàn màn hình bất kể bạn đang ở trong self.view bằng cách thêm subview đến nơi bạn đang nằm ở self.view của bạn thay vì đặt nó ở góc trên cùng bên trái , chỉ hiển thị đầy đủ nếu bạn ở trên cùng của chế độ xem.