iOS-【译】Programming iOS 9首页投稿(暂停使用,暂停投稿)iOS && Android

(简单介绍)UITableViewHeaderView放大方法

2016-03-01  本文已影响3957人  师弟出马

IF(BOOL 学习= =FALSE)BOOL 落后=TRUE;不断的学习,我们才能不断的前进。 --- 五大大组合

UITableView 顶部加入图片,通过拖拽 UITableView 来实现图片的放大。

iOS动画之下拉放大,讲解的动画效果,在很多app中都能见到,就是下拉放大图片的效果。先看看效果图。 1. 默认情况下,图片正常显示(没有被拉大)。 2. 当往下拉动的时候,图片等比例放大

正常
//添加headerView方法

- (void)setLayoutHeaderView {
    
    UIView *headView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 200)];

    self.headImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 200)];

    self.headImageView.image = [UIImage imageNamed:@"123.jpg"];
    [headView addSubview:self.headImageView];
    self.tableView.tableHeaderView = headView;
    
}

固定的大小,向下拖动TableView后,顶部露出了背景图片。

未实现

对于不需要下拉刷新的页面,又不想分配太大的空间来显示顶部图片,则可以选择这种。想要看大图?只要下拉TableView即可。_

设置一个 UIImageView 为 UITableView 的 tableHeaderView,设置 UITableView 的 UIScrollViewDelegate在 TableView 滚动时,动态改变 tableHeaderView 的状态。

//
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
  
    CGFloat width = [UIScreen mainScreen].bounds.size.width;
    CGFloat yOffset = scrollView.contentOffset.y  ;
    
    if (yOffset < 0) {    
        CGFloat totalOffset = 200 + ABS(yOffset);
        CGFloat f = totalOffset / 200;
    
        _headImageView.frame = CGRectMake(- (width * f - width) / 2, yOffset, width * f, totalOffset);
        
        
    }
 
}


方法实现后的效果

实现拖动列表时图片放大的效果方法
在scrollViewDidScroll内获取当前滚动坐标的y值当坐标y小于宏定义图片高度时就进行放大;放大原理是改变UIImageView的y坐标和高度,同时由于设置了contentMode属性,图片高度改变会使得宽度跟着改变,达到放大效果。

上一篇下一篇

猜你喜欢

热点阅读