UIScrollView
UIScrollView:是可以滾動(dòng)的view耿焊,UIView本身不能滾動(dòng)聚至,子類(lèi)UIScrollview拓展了滾動(dòng)方面的功能。UIScrollview主要專(zhuān)長(zhǎng)于兩個(gè)方面:滾動(dòng):contentSize大于frame.size的時(shí)候,能夠滾動(dòng)曙砂。縮放:自帶縮放骏掀,可以指定縮放倍數(shù)鸠澈。
UIScrollView初始化:
[self.window addSubview:scrollView];```
##UIScrollView常用屬性
contentSize:設(shè)置滾動(dòng)區(qū)域
`scrollView.contentSize = CGSizeMake(CGRectGetWidth(self.window.frame)*4, 0);`
pagingEnabled:設(shè)置分頁(yè)效果 默認(rèn)值為NO
scrollView.pagingEnabled = YES;
設(shè)置滾動(dòng)條是否顯示 默認(rèn)值為YES
```scrollView.showsHorizontalScrollIndicator = YES;//橫向滾動(dòng)條
scrollView.showsVerticalScrollIndicator = NO;//縱向滾動(dòng)條```
bounces:設(shè)置邊界是否有反彈效果 默認(rèn)值為YES
scrollView.bounces = YES;//控制所有的
scrollView.alwaysBounceHorizontal = YES;//控制水平方向遇到邊框是否反彈
scrollView.alwaysBounceVertical = YES;//控制垂直方向遇到邊框是否反彈```
scrollEnabled:控制控件是否能滾動(dòng)
scrollView.scrollEnabled = YES;
scrollsToTop:控制控件滾動(dòng)到頂部
scrollView.scrollsToTop = YES
contentOffSet :監(jiān)控目前滾動(dòng)的位置
CGPoint offSet = scrollView.contentOffset;
indicatorStyle:設(shè)置滾動(dòng)條的樣式
scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
設(shè)置縮放比例:
scrollView.maximumZoomScale = 5.0;//設(shè)置可放大的最大比例```
zooming:判斷空間是否正在改變
`BOOL zooming = scrollView.zooming`
bouncesZoom:縮放時(shí)是否反彈
` scrollView.bouncesZoom = YES;`
##UIScrollView的代理方法
###滾動(dòng)視圖拖拽時(shí)的代理方法
scrollViewWillBeginDragging:開(kāi)始拖拽(手指觸碰到屏幕,并且移動(dòng))截驮,執(zhí)行一次
```- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"%s",__func__);// __func__打印函數(shù)名
}```
scrollViewDidScroll:已經(jīng)開(kāi)始滾動(dòng)(只要scrollview是滾動(dòng)狀態(tài)就會(huì)調(diào)用此方法)
```- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"%s",__func__);
}```
scrollViewWillBeginDecelerating:開(kāi)始減速(手指離開(kāi)屏幕)笑陈,正在滾動(dòng)的視圖減速,執(zhí)行一次
```- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
NSLog(@"%s",__func__);
}```
scrollViewDidEndDecelerating:視圖靜止葵袭,執(zhí)行一次
```- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"%s",__func__);
}```
###與縮放有關(guān)的代理方法
viewForZoomingInScrollView:指定scrollView的某一個(gè)子視圖為可縮放視圖涵妥,前提條件是該視圖已經(jīng)添加到scrollView上面
```- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
UIView *view = [scrollView viewWithTag:1000];
return view;
}```
scrollViewWillBeginZooming:withView:開(kāi)始縮放 第二個(gè)參數(shù)是指我們將要縮放的視圖(也就是是指定的view),執(zhí)行一次
```- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
{
NSLog(@"%@",view);
}```
scrollViewDidZoom:正在縮放的代理方法 只要正在縮放坡锡,就會(huì)執(zhí)行此方法蓬网,所以此方法在縮放過(guò)程中會(huì)多次調(diào)用
```-(void)scrollViewDidZoom:(UIScrollView *)scrollView
{
NSLog(@"%s",__func__);
}```
scrollViewDidEndZooming:withView:atScale:縮放結(jié)束執(zhí)行的代理方法窒所, view當(dāng)前正在縮放的視圖,scale當(dāng)前正在縮放視圖的縮放比例帆锋,執(zhí)行一次
```- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
NSLog(@"%s",__func__);
}```
#UIPageControl
UIPageControl:頁(yè)面控制器(配合UIScrollView使用),其父類(lèi)是UIControl 吵取。可以像button一樣添加事件窟坐,事件觸發(fā)使用UIControlEventsValueChanged海渊。通常在Scrollview滾動(dòng)的時(shí)候修改pageControl的currentPage屬性。
UIPageControl:初始化
```UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(self.view.frame.size.width, 700, 80, 20)];```
##UIPageControl常用屬性
numberOfPages:設(shè)置頁(yè)數(shù)
`pageControl.numberOfPages = 4;`
currentPage:設(shè)置當(dāng)前頁(yè)數(shù)
`pageControl.currentPage = 0;`
pageIndicatorTintColor:改變不被選中的顏色
`pageControl.pageIndicatorTintColor = [UIColor orangeColor];`
currentPageIndicatorTintColor:改變選中的顏色
`pageControl.currentPageIndicatorTintColor = [UIColor purpleColor];`
添加觸發(fā)事件
```[pageControl addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];
[self.window addSubview:pageControl];```
###UIPageControl的回調(diào)方法
```- (void)pageAction: (UIPageControl *)sender
{
//根據(jù)當(dāng)前的頁(yè)數(shù)哲鸳,使得scrollView也滑動(dòng)到對(duì)應(yīng)的子視圖 通過(guò)設(shè)置scrollView的contentOffSet來(lái)實(shí)現(xiàn)(改變contentOffSet實(shí)際上就是改變scrollView的bounds)
int page = (int)sender.currentPage;//得到當(dāng)前頁(yè)數(shù)
//根據(jù)當(dāng)前頁(yè)數(shù)來(lái)計(jì)算偏移量
//得到scrollView
UIScrollView *scrollView = (UIScrollView *)[self.view viewWithTag:1000];//scrollViews的tag設(shè)置臣疑,這里設(shè)置為1000
//設(shè)置scrollView的偏移量
[scrollView setContentOffset:CGPointMake(page * CGRectGetWidth(self.view.frame), 0) animated:YES];
}```