2015-05-15 42 views
11

Tôi có một ứng dụng tab đơn giản có tab đầu tiên là UITableViewController. Sau khi điền một số dữ liệu, tôi nhận thấy rằng phần trên của chế độ xem bảng chồng lên thanh trạng thái.ios Thanh trạng thái chồng chéo UITableViewController

Tôi đã thử làm rối tung các cài đặt edgesForExtendedLayout và tương tự, nhưng chưa tìm thấy kết hợp huyền diệu. Có ai biết cách sửa lỗi này không?

bước để tái sản xuất:

  1. Tạo một ứng dụng theo thẻ mới
  2. Tháo tab đầu tiên UIViewController và thay thế bằng một UITableViewController
  3. Điền vào UITableView với một số dữ liệu
  4. Chạy ứng dụng

Dưới đây là một vài ảnh chụp màn hình của quá trình thiết lập và t ông phát hành: Xcode Storyboard UITableView overlapping status bar

Trả lời

26

Chỉ việc điều chỉnh contentInset tài sản của xem bảng của bạn, có thể thêm một số đệm xung quanh nội dung của bạn. Trong viewDidLoad() thêm như sau:

tableView.contentInset.top = 20 

trong Objective-C, bạn không thể gán cho đầu trực tiếp, do đó, làm nó như vậy:

self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0); 

Tất nhiên nó có thể là bất kỳ giá trị tùy ý, trong trường hợp này, nó là chiều cao của thanh trạng thái.

+13

Cảm ơn. Tôi ngạc nhiên đây không phải là mặc định. (Apple nên kiểm tra thanh trạng thái và thiết lập nó cho phù hợp.) Tôi giải quyết với 'tableView.contentInset.top = UIApplication.sharedApplication(). StatusBarFrame.height' vì tôi không thích số ma thuật :) –

+0

Và bạn nói đúng về cái đó. ;) Vâng lý do ở đây là (kể từ iOS 7) xem mở rộng các cạnh của họ cho toàn màn hình theo mặc định. Nếu bạn nhúng chế độ xem của mình trong bộ điều khiển điều hướng, bạn sẽ thấy thanh điều hướng được đưa vào tài khoản tự động (được gọi là "hướng dẫn bố cục hàng đầu"). –

+0

bạn có thể muốn thiết lập scrollIndicatorInsets cũng như – Janneman

3

Như đã đề cập trong các ý kiến, một cách là (trong Swift 3):

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.contentInset.top = UIApplication.shared.statusBarFrame.height 
} 

Nhưng đó không phải là sạch. Nó là tốt hơn để embed the UITableViewController in a UINavigationController (Editor> Nhúng Trong> Navigation Controller) và bỏ chọn "Hiển thị Navigation Bar" trong thanh tra. Không cần chỉnh sửa!

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