Bạn có thể đạt được hiệu ứng này khá dễ dàng bằng cách thêm một subview vào xem tiêu đề và điều chỉnh frame
của nó hoặc transform
khi xem bảng là cuộn ngoài phía trên, ví dụ: các thành phần y
của contentOffset
của nó trở nên tiêu cực.
Ví dụ (trong một lớp con UITableViewController
):
- (void)viewDidLoad
{
[super viewDidLoad];
CGFloat headerHeight = 64.0f;
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, headerHeight)];
UIView *headerContentView = [[UIView alloc] initWithFrame:headerView.bounds];
headerContentView.backgroundColor = [UIColor greenColor];
headerContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[headerView addSubview:headerContentView];
self.tableView.tableHeaderView = headerView;
}
//Note: UITableView is a subclass of UIScrollView, so we
// can use UIScrollViewDelegate methods.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat offsetY = scrollView.contentOffset.y;
UIView *headerContentView = self.tableView.tableHeaderView.subviews[0];
headerContentView.transform = CGAffineTransformMakeTranslation(0, MIN(offsetY, 0));
}
(để giữ cho nó đơn giản, tôi đã chỉ được sử dụng các subview đầu tiên của cái nhìn tiêu đề thực tế trong scrollViewDidScroll:
, bạn có thể muốn sử dụng một tài sản cho rằng thay vào đó.)
Khi bạn nói "thoát", bạn có nghĩa là cuộn lên/xuống qua các tiêu đề không? – Aaron
Về cơ bản khi tôi cuộn xuống, tiêu đề vẫn được đặt. Khi tôi cuộn lên, tiêu đề biến mất. Đây là tableHeaderView – KVISH
OK - Tôi đã kiểm tra chế độ xem bảng sự kiện của ứng dụng Facebook. Dường như nó có hành vi mặc định. Bạn có bao nhiêu phần và hàng trong các phần đó trong chế độ xem bảng? Có lẽ bạn không có đủ để có được hiệu quả mà bạn muốn? – Aaron