UIScrollView滾動(dòng)視圖
self.sv= [[UIScrollViewalloc]initWithFrame:self.view.frame];
self.sv.backgroundColor= [UIColorredColor];
[self.viewaddSubview:self.sv];
[self.svrelease];
滾動(dòng)原因:因?yàn)榭丶笮∠拗屏丝娠@示范圍如果想要顯示更多內(nèi)容需要滾動(dòng)
滾動(dòng)條件:內(nèi)容大小>frame.size
內(nèi)容大小
self.sv.contentSize=CGSizeMake(VIEW_WIDTH*6,VIEW_HEIGHT);
添加圖片
for(NSIntegeri =0; i <=6; i++) {
UIImageView*imgView = [[UIImageViewalloc]initWithFrame:CGRectMake((i -1)*VIEW_WIDTH,0,VIEW_WIDTH,VIEW_HEIGHT)];
NSString*name = [NSStringstringWithFormat:@"S%ld.jpg",i];
imgView.image= [UIImageimageNamed:name];
[self.svaddSubview:imgView];
[imgViewrelease];
}
<內(nèi)容偏移量>
只要視圖滾動(dòng)偏移量就會(huì)變化
只要改變偏移量視圖就會(huì)滾動(dòng)
self.sv.contentOffset=CGPointMake(0,0);
內(nèi)邊距
sv.contentInset = UIEdgeInsetsMake(100, 200, 300, 400);
整頁(yè)翻動(dòng)
以當(dāng)前滾動(dòng)視圖的寬度為1頁(yè)
self.sv.pagingEnabled=YES;
邊緣彈動(dòng)效果
self.sv.bounces=YES;
滾到頂部
每個(gè)滾動(dòng)視圖默認(rèn)都為:YES一個(gè)頁(yè)面中存在多個(gè)滾動(dòng)視圖時(shí)僅開啟需要滾動(dòng)的視圖其他滾動(dòng)視圖置為:NO
self.sv.scrollsToTop=YES;
是否允許滾動(dòng)(默認(rèn)YES)
self.sv.scrollEnabled=YES;
滾動(dòng)條顯示和隱藏
水平horizontal
self.sv.showsHorizontalScrollIndicator=NO;
垂直vertical
self.sv.showsVerticalScrollIndicator=NO;
UIPageControl
UIPageControl*page = [[UIPageControlalloc]initWithFrame:CGRectMake(0,0,150,30)];
page.backgroundColor= [UIColorblackColor];
添加父視圖
加在self.view上保證視圖滑動(dòng)時(shí)依然存在
[self.viewaddSubview:page];
[pagerelease];
page.numberOfPages=6;
page.center=CGPointMake(self.view.center.x,VIEW_HEIGHT-50);
[pageaddTarget:selfaction:@selector(page:)forControlEvents:UIControlEventValueChanged];
page.tag=1000;
視圖的滾動(dòng)分為兩個(gè)階段
1.拖拽(手指在屏幕上)
2.減速(手指離開屏幕)
self.sv.delegate=self;
滾動(dòng)視圖功能為:滾動(dòng)/縮放
最小比例
self.sv.minimumZoomScale=0.5;
最大比例
self.sv.maximumZoomScale=2;
}
#pragma mark? -縮放協(xié)議方法
滾動(dòng)視圖已經(jīng)滾動(dòng)(只要偏移量變化/只要視圖滾動(dòng)就會(huì)觸發(fā)該方法)
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
NSLog(@"設(shè)置scrollView中跟隨縮放的視圖");
return scrollView.subviews.firstObject;
}
#pragma mark -滾動(dòng)協(xié)議方法
滾動(dòng)視圖已經(jīng)滾動(dòng)
-(void)scrollViewDidScroll:(UIScrollView*)scrollView{
NSLog(@"滾啊滾");
}
視圖將要開始拖拽
-(void)scrollViewWillBeginDragging:(UIScrollView*)scrollView{
滾動(dòng)開始
NSLog(@"視圖將要開始拖拽");
}
視圖已經(jīng)結(jié)束拖拽
-(void)scrollViewDidEndDragging:(UIScrollView*)scrollView willDecelerate:(BOOL)decelerate{
NSLog(@"視圖將要結(jié)束拖拽");
}
//視圖將要開始減速
-(void)scrollViewWillBeginDecelerating:(UIScrollView*)scrollView{
NSLog(@"視圖將要開始減速");
}
視圖已經(jīng)結(jié)束減速
-(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView{
結(jié)束滾動(dòng)
scrollView.zoomScale=1;
獲取頁(yè)碼控制器
UIPageControl*pc = [self.viewviewWithTag:1000];
修改小圓點(diǎn)
pc.currentPage=self.sv.contentOffset.x/VIEW_WIDTH;
NSLog(@"視圖已經(jīng)結(jié)束減速");
}
#pragma mark - page方法
-(void)page:(UIPageControl*)page{
當(dāng)頁(yè)碼變化時(shí)改變滾動(dòng)視圖的偏移量
375*page.currentPage當(dāng)前頁(yè)碼對(duì)應(yīng)的滾動(dòng)視圖偏移量
self.sv.contentOffset = CGPointMake(375*page.currentPage, 0);
[self.sv setContentOffset:CGPointMake(375*page.currentPage, 0) animated:YES];
通過(guò)動(dòng)畫滾動(dòng)
[UIViewanimateWithDuration:1animations:^{
self.sv.contentOffset=CGPointMake(VIEW_WIDTH*page.currentPage,0);
}];
}