6

Tôi có một UINavigationController có thể hiển thị dữ liệu dưới dạng UICollectionView hoặc trong UITableView. iOS 7 tự động điều chỉnh chế độ xem cuộn cuộn cho UIScrollView đầu tiên được thiết lập trong cấu trúc phân cấp chế độ xem.Chỉ báo cuộn UITableView trong UINavigationBar sau khi sửa đổi contentEdgeInset

Vì vậy, UICollectionView là ok nhưng tôi phải đặt contentEdgeInset cho số UITableView. Sau khi dòng này

self.tableView.contentInset = UIEdgeInsetsMake(44.0f, 0.0f, 0.0f, 0.0f);

nội dung trong UITableView được hiển thị tốt, nhưng chỉ số cuộn không dừng lại ở UINavigationBar, nhưng vẫn tiếp tục dưới nó.

Làm cách nào để giải quyết điều này và dừng chỉ báo cuộn khi bắt đầu UINavigationBar?

enter image description here

Trả lời

11

Bạn cũng có thể thiết lập các scrollIndicatorInsets như sau:

self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(44.0f, 0.0f, 0.0f, 0.0f); 

Bằng cách này, trên iOS 7, bạn nên sử dụng [self.topLayoutGuide length] thay vì cứng mã hóa 44.0f pixel. Từ số iOS 7 Transition Guide:

Thuộc tính TopLayoutGuide và bottomLayoutGuide cho biết vị trí của thanh trên cùng hoặc dưới cùng trong chế độ xem của bộ điều khiển chế độ xem.

+0

Hoàn hảo! Nhưng '[self.topLayoutGuide length]' không hoạt động đối với tôi ... return 0. Tại sao? – Fry

+2

Nếu bạn đang gọi nó trong -viewDidLoad thì nó có thể trở về số không. Điều tốt nhất để làm sẽ là kiểm tra nó trong -viewDidLayoutSubviews và đặt insets của bạn ở đó. –

+0

bạn cũng có thể muốn đặt nội dung insets cũng như trong viewWillLayoutSubviews chính nó như sau: 'self.tableView.contentInset = UIEdgeInsetsMake (0.0f, 0.0f, 49.0f, 0.0f);' – Sourabh

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