#import "HMViewController.h" const CGFloat ICITopViewH = 350; @interface HMViewController () @property (nonatomic, weak) UIImageView *topView; @end @implementation HMViewController - (void)viewDidLoad { [super viewDidLoad]; // 設置內邊距(讓cell往下移動一段距離) self.tableView.contentInset = UIEdgeInsetsMake(ICITopViewH * 0.5, 0, 0, 0); UIImageView *topView = [[UIImageView alloc] init]; topView.image = [UIImage imageNamed:@"biaoqingdi"]; topView.frame = CGRectMake(0, -ICITopViewH, 320, ICITopViewH); //設置UUIImageView的內容顯示模式。來實現下拉放大的關鍵 topView.contentMode = UIViewContentModeScaleAspectFill; //插入到tableView的第一個子控件,使用addSubView的話,下拉會把底部的Cell遮擋。 [self.tableView insertSubview:topView atIndex:0]; self.topView = topView; } #pragma mark - 數據源方法 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 20; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *ID = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID]; } cell.textLabel.text = [NSString stringWithFormat:@"測試數據---%ld", (long)indexPath.row]; return cell; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { // 向下拽了多少距離 CGFloat down = -(ICITopViewH * 0.5) - scrollView.contentOffset.y; if (down < 0) return; CGRect frame = self.topView.frame; // 5決定圖片變大的速度,值越大,速度越快 frame.size.height = ICITopViewH + down * 5; self.topView.frame = frame; } @end