IOS下拉放大图片

2016-10-14  本文已影响0人  尕qin

先看下效果图吧

aaaa.gif

图片录制大了点不好意思!

介绍

先讲一些思路吧:

注意:

很多人以为这个图片是表头,如果你把它设置做表头是不可能出现这种效果的。

布局方法:

直接加在表上面。

例子

我用的是第一种
宏定义和属性

//屏幕宽度
#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width;
@property(weak,nonatomic)UIScrollView *scrollView;
@property(weak,nonatomic)UIPageControl *page;
@property(weak,nonatomic)UIButton *searchBtn;

Scrollview 图片布局跟平时一样布局自己加上去就行了,不贴那么多代码了

UIScrollView *scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_WIDTH*5/7)];
scrollView.delegate=self;
//scrollView直接加tableView上面
[self.tableView addSubview:scrollView];

//红色的条 可以换成其他控件
UIButton *searchBtn=[UIButton buttonWithType:UIButtonTypeCustom];
searchBtn.frame=CGRectMake(10, SCREEN_WIDTH*5/7-40, SCREEN_WIDTH-20, 30);
//注意。加在tableView上别加在scrollView上
[self.tableView addSubview:searchBtn];
self.scrollView=scrollView;
self.page=page;

//滚动的点UIPageControl
UIPageControl *page=[[UIPageControl alloc]initWithFrame:CGRectMake(0,SCREEN_WIDTH*5/7-10, SCREEN_WIDTH, 10)];
//注意。加在tableView上别加在scrollView上
[self.tableView addSubview:page];
self.searchBtn=searchBtn;

为什么红色的条和page不是加在scrollView上呢?因为我使用的是transform放大,如果不是用transform放大scrollView里面的图片布局非常难了。

下面是下拉放大

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    //判断下拉的时候 SCREEN_WIDTH*5/7是scrollView的高度再*2
    //解释一下为什么*2 一个视图缩小成0.5倍,体积为原来的1/4,所以*2,高度就对了
    if (scrollView.contentOffset.y<0) {
        self.scrollView.transform=CGAffineTransformMakeScale(1-scrollView.contentOffset.y/SCREEN_WIDTH*5/7*2, 1-scrollView.contentOffset.y/SCREEN_WIDTH*5/7*2);
        //让scrollView一直在最顶 改变scrollView的y值 
        CGRect tempFrame=self.scrollView.frame;
        tempFrame.origin.y=scrollView.contentOffset.y;
        self.scrollView.frame=tempFrame;
    }
}

下面把tableView的第0个区头空出scrollView的高度,别返回nil (不返会nil,scrollView会被区头盖在) 就不会挡住tableView需要显示的东西了

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    if (section==0) {
        //第一个区空出表头高度
        return  SCREEN_WIDTH*5/7;
    }else{
        return 30;
    }
}
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    if (section==0) {
        return nil;
    }else{
        UIView *view=[[UIView alloc] init];
        return view;
    }
}

还是不行的可以留言问我,觉得不错的点个赞。

上一篇 下一篇

猜你喜欢

热点阅读