iOS tableView下拉圖片放大

pwmd 9年前發布 | 4K 次閱讀 Objective-C IOS

其實這個效果,本質上就是在你tableView下拉 造成offset時候, 保持你頂部圖片的y坐標點還停留在下拉時屏幕的頂點(offset), 而圖片的長度變為原始的height長度-(offset ) 就達到了下拉放大的效果。

 直接上代碼了:

                      1. 首先創建一個UIView作為headerView

            _topView = [[UIView alloc]initWithFrame:CGRectMake(, , MCAPPWidth, 80)];

            _tableView.tableHeaderView = _topView;

           2.其次創建一個UIImageView放那張圖片 

            _topImageView = [[UIImageView alloc]initWithFrame:CGRectMake(, , MCAPPWidth, 80)];

            _topImageView.contentMode = UIViewContentModeScaleAspectFill;

            _topImageView.layer.masksToBounds = YES;

            [_topImageView sd_setImageWithURL:[NSURL URLWithString:nil] placeholderImage:[UIImage imageNamed:@"mian_bg"]];

            [_topView addSubview:_topImageView];


           3.最后引入scrollView的代理方法 監聽frame的變化

            

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    if (_tableView == scrollView) {

     CGFloat yOffset = _tableView.contentOffset.y;

    //下拉圖片放大

    if (yOffset < ) {

        _topView.frame = CGRectMake(, yOffset, MCAPPWidth, 80 * Height - yOffset);

        _topImageView.frame = CGRectMake(, yOffset, MCAPPWidth, 80 * Height - yOffset);

        NSLog(@"%.2f", _topImageView.y);

    }

    else {

        _topView.frame = CGRectMake(, , MCAPPWidth, 80 * Height - yOffset);

        _topImageView.y = yOffset * 0.65;

        _topImageView.height = 80 * Height - yOffset * 0.65;

    }

   }

}

我這里上拉 圖片做的是相對位移 如果只需要下拉變大效果 上拉回原樣 需要把else 里的 后兩句代碼注釋掉, 換成_topImageView.y = _topView.y值保持一樣即可。 我這里的.y是自己封裝的方法直接copy會出錯哦。
 本文由用戶 pwmd 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!