iOSUITableView头部带有图片并且下拉图片放大效果
2017-07-20 16:53
846 查看
最近感觉UITableview头部带有图片,并且下拉时图片放大这种效果非常炫酷,所以动手实现了一下,效果如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/18/5e4f8f2e0db8c0ad00fd97a69445d246)
1.gif
实现原理很简单,就是在UITableview上边添加一个图片子视图,在tableview拖动的时候动态的改变图片的frame,就可以实现这个效果。
步骤如下:
1. 布置UITableview
UITableview的设置和正常一样,没有什么需要注意的地方,我这里是直接在storyboard里面拖的,代码如下:
2. 布置图片
布置图片的时候,我们首先要通过设置UITableview的内容偏移来为图片视图留出位置,这里我们的图片高度暂定为200。
接下来就是布置图片,图片要放在内容视图之上,所以图片的纵向位置应该为负。
需要注意的是,图片的 contentMode 必须设置为 UIViewContentModeScaleAspectFill , 这样才能保证图片在放大的过程中高和宽是同时放大的。
3. 拖动事件的处理
我们都知道,UITableview属于可以滑动的控件,所以它的父类是UIScrollView,所以我们就可以在滑动事件中做出一些处理。
在滑动的时候,一旦判定是下拉状态并且是从大于图片高度的地方下拉的,那么我们就要动态的改变图片的纵向位置和图片的高度(由于设置了contentMode,所以宽度自己会变化),最终实现所需要的效果。
代码如下:
来源自PlutoMa:http://www.jianshu.com/p/55ced75b5ba3
1.gif
实现原理很简单,就是在UITableview上边添加一个图片子视图,在tableview拖动的时候动态的改变图片的frame,就可以实现这个效果。
步骤如下:
1. 布置UITableview
UITableview的设置和正常一样,没有什么需要注意的地方,我这里是直接在storyboard里面拖的,代码如下:
@property (weak, nonatomic) IBOutlet UITableView *tableView;
self.tableView.delegate = self; self.tableView.dataSource = self; [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell_id"];
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 30; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell_id" forIndexPath:indexPath]; cell.textLabel.text = [NSString stringWithFormat:@"%ld--%ld", indexPath.section, indexPath.row]; return cell; }
2. 布置图片
布置图片的时候,我们首先要通过设置UITableview的内容偏移来为图片视图留出位置,这里我们的图片高度暂定为200。
self.tableView.contentInset = UIEdgeInsetsMake(kHEIGHT, 0, 0, 0);
接下来就是布置图片,图片要放在内容视图之上,所以图片的纵向位置应该为负。
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, -kHEIGHT, [UIScreen mainScreen].bounds.size.width, kHEIGHT)]; imageView.image = [UIImage imageNamed:@"IMG_0767.JPG"]; imageView.contentMode = UIViewContentModeScaleAspectFill; imageView.tag = 101; [self.tableView addSubview:imageView];
需要注意的是,图片的 contentMode 必须设置为 UIViewContentModeScaleAspectFill , 这样才能保证图片在放大的过程中高和宽是同时放大的。
3. 拖动事件的处理
我们都知道,UITableview属于可以滑动的控件,所以它的父类是UIScrollView,所以我们就可以在滑动事件中做出一些处理。
在滑动的时候,一旦判定是下拉状态并且是从大于图片高度的地方下拉的,那么我们就要动态的改变图片的纵向位置和图片的高度(由于设置了contentMode,所以宽度自己会变化),最终实现所需要的效果。
代码如下:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGPoint point = scrollView.contentOffset; if (point.y < -kHEIGHT) { CGRect rect = [self.tableView viewWithTag:101].frame; rect.origin.y = point.y; rect.size.height = -point.y; [self.tableView viewWithTag:101].frame = rect; } }
来源自PlutoMa:http://www.jianshu.com/p/55ced75b5ba3
相关文章推荐
- [iOS]实现UITableView头部带有图片并且下拉图片放大效果
- UITableView头部带有图片并且下拉图片放大效果
- [IOS]对UITableView的简单封装,实现了下拉放大头部图片的效果
- iOS仿keep5.3.0版本运动能力界面实现UITableView图片下拉放大效果
- iOS仿keep5.3.0版本健身等级界面实现UITableView头部图片下拉纵向拉伸效果
- iOS开发-UITableView顶部图片下拉放大
- iOS tableView实现下拉图片放大效果
- iOS编程——最简单的实现UITableView下拉时顶部图片放大消失的效果
- 下拉UITableview实现图片放大效果
- iOS下拉tableView实现上面的图片放大效果
- ios UITableview头部图片弹簧效果
- tableview下拉的时候,头部图片放大效果view下拉的时候,头部图片放大效果
- iOS开发-UITableView顶部图片下拉放大
- UITableView头部ImageView下拉放大效果,导航栏透明渐变
- 第六十七篇、OC_UITableView head下拉图片放大的效果
- UITableView下拉色彩渐变,图片变大效果(模仿链家网iOS APP首页)
- ios UITableView封装之下拉-上提-图片异步加载
- iOS ScrollView 下拉放大图片,上滑覆盖图片实现方法(Swift 3.0)
- AJ学IOS 之tableView的下拉放大图片的方法
- Android DragImageView实现下拉拖动图片放大效果