博客> UITableView下拉放大图片(已解决多个bug)
UITableView下拉放大图片(已解决多个bug)
2019-11-18 08:57 评论:0 阅读:1085 Vip密斯特韦
ios UITableView tableHeaderView 下拉放大

UITableView下拉放大图片的思路其实很简单,创建一个UIView对象和一个UIImageView对象,将UIImageView添加到UIView上,然后将UIView对象设置成tableView的tableHeaderView,然后在scrollView的代理方法里边根据y的偏移量来设置UImageView对象的frame就能实现效果了,废话少说,能上代码就不逼逼

这是两个核心方法,里面有些宏和变量是我自己项目中要用到的,具体情况根据你们自己代码来定 -(void)creatTableView { //创建tableView self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, L_SCREEN_WIDTH, L_SCREEN_HEIGHT) style:UITableViewStyleGrouped]; self.tableView.dataSource = self; self.tableView.delegate = self; [self.view addSubview:self.tableView]; [self.tableView registerNib:[UINib nibWithNibName:@"TakenHDCell" bundle:nil] forCellReuseIdentifier:@"cell"];

//创建头视图
UIView *headView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, L_SCREEN_WIDTH, (225/375.f)*L_SCREEN_WIDTH)];
headView.backgroundColor = [UIColor orangeColor];

//创建ImageView
self.headImgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, L_SCREEN_WIDTH,(225/375.f)*L_SCREEN_WIDTH)];
self.headImgView.image = [UIImage imageNamed:@"1234.jpg"];
self.headImgView.contentMode = UIViewContentModeScaleAspectFit;
[headView addSubview:self.headImgView];

//将headView设置为tableView的头视图
self.tableView.tableHeaderView = headView;

}

// //#pragma mark - ScrollView代理方法 -(void)scrollViewDidScroll:(UIScrollView *)scrollView {

CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat yOffset = scrollView.contentOffset.y;

if (yOffset < 0) {

    CGFloat totalOffset = (225/375.f)*L_SCREEN_WIDTH - yOffset;
    CGFloat f = totalOffset / (225/375.f)*L_SCREEN_WIDTH;

    self.headImgView.frame = CGRectMake(- (width * f - width) / 2, yOffset, width * f,  totalOffset);
}

}

这里有两个注意点,第一,在创建UIImageView的时候一定要设置contentMode属性,不然后果你懂得。 第二,就是ScrollView代理方法里面的计算,相信大家都看得懂的,

收藏
0
sina weixin mail 回到顶部