Tôi cần thêm một số không gian trống vào đầu UITableView của mình để không ảnh hưởng đến kích thước của vùng nội dung. Chuyển nội dung xuống hoặc thêm một ô trống KHÔNG phải là điều tôi muốn làm. Thay vào đó tôi chỉ muốn một sự bù đắp.
Làm sao?
Tôi cần thêm một số không gian trống vào đầu UITableView của mình để không ảnh hưởng đến kích thước của vùng nội dung. Chuyển nội dung xuống hoặc thêm một ô trống KHÔNG phải là điều tôi muốn làm. Thay vào đó tôi chỉ muốn một sự bù đắp.
Làm sao?
Câu trả lời:
Tôi không chắc liệu tôi có đang theo dõi bạn hay không nhưng tôi nghĩ rằng tôi đang gặp tình trạng khó khăn tương tự. Trong trường hợp của tôi, tôi phải cung cấp một số không gian cho ADBannerView ở đầu màn hình, vì vậy những gì tôi đã làm là trong phương thức viewDidLoad mà tôi đã thêm:
[self.tableView setContentInset:UIEdgeInsetsMake(50,0,0,0)];
các giá trị nó nhận là UIEdgeInsetsMake (trên cùng, trái, dưới, phải).
Ngoài ra, tương tự với Swift:
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0)
Swift 4.2:
self.tableView.contentInset = UIEdgeInsets(top: 50, left: 0, bottom: 0, right: 0)
Bạn có thể thêm chế độ xem tiêu đề "trống" vào bảng ... điều này sẽ cung cấp cho giao diện ban đầu của bảng có phần bù, nhưng khi bạn bắt đầu cuộn thì phần bù sẽ biến mất. KHÔNG chắc đó là những gì bạn muốn.
Nếu bạn cần một phần bù đắp vĩnh viễn và chưa sử dụng tiêu đề phần, thì bạn có thể tạo phần bù tương tự như trên bằng cách tạo các chế độ xem tùy chỉnh cho tiêu đề phần, đặc biệt nếu bạn chỉ có một phần, điều này có thể cung cấp cho bạn giao diện của phần bù vĩnh viễn .
Tôi có thể đăng mã mẫu nếu có vẻ như một trong hai mã đó là những gì bạn đang tìm kiếm.
Có vẻ như bạn muốn bao bọc một 'Chế độ xem' xung quanh mình UITableView
. Nếu bạn có UITableViewController
IB, UITableView
sẽ tự động được đặt thành view
của UITableViewController
. Bạn thay đổi thuộc view
tính thành bình thường UIView
và thêm của bạn UITableView
vào đó và bù đắp cho nó.
--- Chỉnh sửa --- Tôi chỉ mới đọc bài đăng của mình và nghĩ rằng nó có ý nghĩa nhỏ :) Khi bạn tạo một bài viết, UITableViewController
bạn nhận được điều này (trong mã giả):
UITableViewController.view = UITableView
Điều này có nghĩa là bảng thực tế sẽ chiếm toàn bộ không gian và bạn thậm chí không thể thêm các chế độ xem khác. Vì vậy, bạn cần thay đổi
UITableViewController.view = UIView
và thêm bảng của bạn vào đó UIView
Tôi đã kết hợp câu trả lời này với câu trả lời sau: https://stackoverflow.com/a/9450345/1993937
Để làm cho tableView xuất hiện ở đầu nội dung, vì vậy không gian ở trên cùng không bị cắt bằng cách cuộn tableView xuống một chút khi chế độ xem ban đầu xuất hiện. (18 là khoảng cách cao nhất của tôi)
[self.tableView setContentInset:UIEdgeInsetsMake(18,0,0,0)];
[self.tableView setContentOffset:
CGPointMake(0, -self.songListTable.contentInset.top) animated:YES];