2009-06-28 31 views
10

Tôi đã tạo một ứng dụng iPhone đơn giản có hai tệp .xib. Trong các đại biểu ứng dụng tại đơn đã kết thúc phóng tôi hiển thị các tập tin .xib đầu tiên bằng cách gọi:Không chắc chắn lý do tại sao UIView đang được đẩy lên khoảng 10px

[window addSubview:myView]; 

và tôi làm như vậy trên một IBAction cho một UIButton để thay đổi quan điểm để myView2.

Điều tôi đang tìm thấy là có một thanh màu trắng khoảng 10 pixel khi tôi chạy ứng dụng, cho cả hai chế độ xem. Tôi cũng nhận thấy rằng các nút được bù đắp bằng 10 pixel (xấp xỉ). Vì vậy, tôi có ấn tượng rằng chế độ xem đang được hiển thị từ 10 pixel khỏi màn hình và kết thúc ngắn.

Bất kỳ ý tưởng nào tại sao điều này có thể xảy ra, cách tôi có thể khắc phục sự cố hoặc cách tôi có thể gỡ rối thêm những gì đang diễn ra? Tôi đã kiểm tra các tập tin .xib của tôi và họ đang tiêu thụ chiều cao đầy đủ của thiết bị (nghĩa là không có thanh màu trắng), do đó, điều này có vẻ là một vấn đề bên trong XCode.

EDIT: Tôi đã thu hẹp vấn đề một chút. Tôi đang sử dụng hai phương pháp để tải subview. Khi tôi tải chế độ xem đầu tiên bên trong applicationDidFinishLaunching mọi thứ đều ổn. Tuy nhiên, nếu tôi thay thế hai thư này thành window bằng phương thức [self originalView], thì mọi thứ sẽ diễn ra một chút.

- (void)applicationDidFinishLaunching:(UIApplication *)application {  
    //[self originalView]; <- I want to use this instead of the following two lines 

    // Override point for customization after app launch  
    [window addSubview:viewController.view]; 
    [window makeKeyAndVisible]; 

} 

-(void)endView{ 
    endV = [[EndViewController alloc] initWithNibName:@"EndView" bundle:nil]; 
    [window removeFromSuperview]; 
    [window addSubview:endV.view]; 
} 
-(void)originalView{ 
    viewController = [[MyAppViewController alloc] init]; 
    [window removeFromSuperview]; 
    [window addSubview:viewController.view]; 

} 

Từ những gì tôi có thể nhìn thấy, tôi luôn kêu gọi các dòng cùng một đoạn mã, không có vấn đề nếu nó bên trong applicationDidFinishLaunching hoặc trong [self originalView] nhưng nó có vẻ như window được chuyển ra được một đối tượng khác nhau.

Trả lời

12

Khi sử dụng UIViewController theo cách thông thường (ví dụ: pushing it on a UINavigationController), nó sẽ điều chỉnh khung của khung nhìn.

Vì bạn đang thêm chế độ xem phụ theo cách thủ công, bạn phải tự điều chỉnh khung. Nguồn gốc ở góc trên bên phải (ở trên cùng của thanh trạng thái). Bạn muốn chuyển chế độ xem của mình xuống 20 pixel.

+0

Tất cả các ví dụ tôi đã thấy sử dụng UINavigationController để hiển thị một hệ thống phân cấp danh sách, nó chỉ là những gì nó được sử dụng? Hoặc tôi có thể sử dụng nó để kiểm soát chế độ xem nào được hiển thị, ngay cả khi chúng không cần NavigationBar, v.v ...? –

2

Trong trình tạo giao diện, bạn có thể thêm Phần tử giao diện mô phỏng sẽ xuất hiện theo chương trình (chẳng hạn như thanh trạng thái hoặc thanh điều hướng). Trong thanh tra của bạn, chọn chế độ xem của bạn và chuyển đến tab Thuộc tính. Ở đây bạn có thể mô phỏng thanh Trạng thái, thanh trên cùng hoặc thanh dưới cùng.

5

Đây là giải pháp của tôi:

// adjust the frame of subview which is going to be add 
self.navController.view.frame = CGRectMake(0, 0, 320, 460); 
[self.view addSubView:self.navController.view]; 

Nó hoạt động tốt đối với tôi bây giờ, chúc may mắn ~ :)

1

Hình như bạn gọi pushVC để UIViewController này tại địa điểm sai. Tôi đã từng gặp vấn đề tương tự. Nó đã được giải quyết bằng cách di chuyển [self.navigationController pushViewController: animated:] từ viewDidLoad đến viewDidAppear: trong một phân cấp trước đó UIViewController.

1

Bất cứ khi nào một khoảng cách kỳ lạ xuất hiện, hoặc xem một phần ẩn đằng sau thanh trạng thái, nó có cái gì để làm với một trong hai

  1. nét shouldAutorotate trong bộ điều khiển gốc của bạn - không chắc chắn nếu nó là một lỗi hay không , nhưng cố gắng để ở phù hợp với sự trở lại của chức năng đó cho tất cả các tiểu viewcontrollers (thường là kết quả trong một viewController được ẩn đằng sau thanh trạng thái)
  2. một định nghĩa wantsFullscreen của một subview - thiết lập để NO nếu có thể

tôi có bot h lỗi trong ứng dụng của tôi và giải quyết chúng! Hy vọng tôi có thể giúp bạn tiết kiệm thời gian (tôi lãng phí rất nhiều thời gian)

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