2011-02-08 7 views
19

Tôi có một UIViewController gốc mà tôi thêm UIViewController khác như subviews. Hiện tại, mỗi bản xem trước đều quá thấp (che đậy thanh tab tùy chỉnh của tôi). Khi tôi cố gắng như sau, nó không hoạt động:iPhone: Cách đặt khung UIViewController?

// Test setting frame size to see if it works 
self.view.frame = CGRectMake(0, 0, 200, 200); 

Điều đó không có gì thay đổi kích thước khung hình.

Vì vậy, câu hỏi của tôi là, làm thế nào tôi có thể đặt khung hình của tôi khi UIViewController được khởi tạo sau khi nó được thêm làm subview?

+0

Sử dụng giao diện Builder nếu bạn có thể, thay thế. –

+0

Bạn đã cố gắng đặt khung điều khiển của chế độ xem phụ trong phương thức viewDidAppear của nó sau khi bộ điều khiển xem phụ đã được thêm chưa? – alones

+0

Tôi đã thử phương thức viewDidLoad. –

Trả lời

21

@Nic tôi nghĩ rằng khi bạn đang thêm rằng quan điểm khác, vào thời điểm mà bạn cần xác định kích thước khung hình quan điểm khác như thế này:

Someviewcontroller *c = initWithNibName 
c.view.frame = CGRectMake(0, 0, 200, 200); 
[self addSubView:c]; 

tôi không biết nếu điều này sẽ làm việc nhưng nó là một cái gì đó như thế này .

+0

làm thế nào để làm điều đó nếu một uiviewcontroller là một phần của một uitabbarcontroller? – wagashi

+0

Tôi không nhận được câu hỏi của bạn ... – Robin

+0

Tôi không biết làm thế nào để thiết lập khung của uiviewcontroller khi nó là một phần của một uitabbarcontroller. Bây giờ đã rõ chưa? – wagashi

6

Trước tiên, hãy đảm bảo rằng khung của bạn thực sự không thay đổi kích thước. Có khả năng nó/là/thay đổi kích thước, nhưng bạn đang mong đợi nó để clip nội dung của nó; hành vi này không được kích hoạt theo mặc định trên một UIView, và sẽ cần phải được thiết lập thông qua:

[[self view] setClipsToBounds:YES]; 

Để kiểm tra lại và đảm bảo rằng khung của bạn được/không được thay đổi kích thước sau khi đặt khung mới, hãy thử đăng này:

NSLog(@"New frame is: %@", NSStringFromCGRect([[self view] frame])); 

hoặc chỉ cần đặt điểm ngắt sau khi thay đổi và kiểm tra giá trị trong trình gỡ lỗi của bạn.

+0

Điều đó dường như hoạt động ở một trong các chế độ xem của tôi, nhưng chế độ xem khác là UINavigationController, không hoạt động để thay đổi khung. –

4

Sau đó, luôn có ...

// Screen, less StatusBar 
CGRect l_RectFrame = [UIScreen mainScreen].applicationFrame; 

HOẶC ...

// Entire Screen 
CGRect l_RectFrame = [UIScreen mainScreen].bounds; 


MyView *l_aView = [[MyView alloc] initWithFrame:l_RectFrame]; 
...