即最靠近屏幕中心的cell顯示行高最大, 越遠(yuǎn)離越小
自定義cell類中
正常創(chuàng)建imageview, 但, 注意上下的約束, 上超出contentview20, 下超出80
[_imageViewOfPic mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.contentView).offset(0);
make.top.mas_equalTo(self.contentView).offset(-20);
make.bottom.mas_equalTo(self.contentView).offset(80);
}];
自己封裝一個方法, 改變圖片的frame, 然后在.h聲明出去
- (void)cellOnTableView:(UITableView *)tableView didScrollView:(UIView *)view{
// 將cell的frame轉(zhuǎn)換成view的Frame(為了獲取每個cell的Y值)
CGRect rect = [tableView convertRect:self.frame toView:view];
//視圖的frame的一半 減去 所看到的每個CellY值(獲取滾動的值)
//以屏幕中心點(diǎn)為0點(diǎn) 獲取能看到的每個Cell離中心點(diǎn)得值是多少
float distanceCenter = CGRectGetHeight(view.frame) / 2 - CGRectGetMinY(rect);
// 圖片高度 - cell的高度 (獲取圖片超出cell高度部分)圖片肯定要比cell大,否則不會有視覺差效果
float difference = CGRectGetHeight(self.imageViewOfPic.frame) - CGRectGetHeight(self.frame);
float imageMove = (distanceCenter / CGRectGetHeight(view.frame)) *difference;
//舊的圖片frame
CGRect imageRect = self.imageViewOfPic.frame;
//移動
imageRect.origin.y = imageMove - (difference / 2);
//新的圖片frame
self.imageViewOfPic.frame = imageRect;
}
在vc中兩個tableView的協(xié)議方法照寫, 但是多一個scollView的滾動監(jiān)聽
#pragma mark - 滾動監(jiān)聽
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
//獲取表視圖的可見單元格(可見的視圖)
NSArray *visibleCells = [self.tableView visibleCells];
for (NAMinePicTableViewCell *cell in visibleCells) {
//可見視圖設(shè)置->背景圖片y值
[cell cellOnTableView:self.tableView didScrollView:self.view];
}
}
感謝http://www.reibang.com/p/2826bffb517e 的分享, 我是用純代碼寫的, 都一樣