先看下效果图吧
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;
}
}
还是不行的可以留言问我,觉得不错的点个赞。
网友评论