UIScrollView和UIPageControl

UIScrollView

UIScrollView:是可以滾動的view,UIView本身不能滾動,子類UIScrollview拓展了滾動方面的功能。UIScrollview主要專長于兩個方面:滾動:contentSize大于frame.size的時候,能夠滾動??s放:自帶縮放,可以指定縮放倍數(shù)。
UIScrollView初始化:

[self.window addSubview:scrollView];```

##UIScrollView常用屬性
contentSize:設(shè)置滾動區(qū)域
`scrollView.contentSize = CGSizeMake(CGRectGetWidth(self.window.frame)*4, 0);`

pagingEnabled:設(shè)置分頁效果 默認(rèn)值為NO
scrollView.pagingEnabled = YES;

設(shè)置滾動條是否顯示 默認(rèn)值為YES
```scrollView.showsHorizontalScrollIndicator = YES;//橫向滾動條
scrollView.showsVerticalScrollIndicator = NO;//縱向滾動條```

bounces:設(shè)置邊界是否有反彈效果 默認(rèn)值為YES

scrollView.bounces = YES;//控制所有的
scrollView.alwaysBounceHorizontal = YES;//控制水平方向遇到邊框是否反彈
scrollView.alwaysBounceVertical = YES;//控制垂直方向遇到邊框是否反彈```

scrollEnabled:控制控件是否能滾動
scrollView.scrollEnabled = YES;

scrollsToTop:控制控件滾動到頂部
scrollView.scrollsToTop = YES

contentOffSet :監(jiān)控目前滾動的位置
CGPoint offSet = scrollView.contentOffset;

indicatorStyle:設(shè)置滾動條的樣式
scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;

設(shè)置縮放比例:

scrollView.maximumZoomScale = 5.0;//設(shè)置可放大的最大比例```

zooming:判斷空間是否正在改變
`BOOL zooming = scrollView.zooming`

bouncesZoom:縮放時是否反彈
` scrollView.bouncesZoom = YES;`

##UIScrollView的代理方法
###滾動視圖拖拽時的代理方法
scrollViewWillBeginDragging:開始拖拽(手指觸碰到屏幕,并且移動),執(zhí)行一次
```- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"%s",__func__);// __func__打印函數(shù)名
}```

scrollViewDidScroll:已經(jīng)開始滾動(只要scrollview是滾動狀態(tài)就會調(diào)用此方法)
```- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"%s",__func__);
}```

scrollViewWillBeginDecelerating:開始減速(手指離開屏幕),正在滾動的視圖減速,執(zhí)行一次
```- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"%s",__func__);
}```

scrollViewDidEndDecelerating:視圖靜止,執(zhí)行一次
```- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"%s",__func__);
}```

###與縮放有關(guān)的代理方法
viewForZoomingInScrollView:指定scrollView的某一個子視圖為可縮放視圖,前提條件是該視圖已經(jīng)添加到scrollView上面
```- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    UIView *view = [scrollView viewWithTag:1000];
    return view;
}```

scrollViewWillBeginZooming:withView:開始縮放 第二個參數(shù)是指我們將要縮放的視圖(也就是是指定的view),執(zhí)行一次
```- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
{
    NSLog(@"%@",view);
}```

scrollViewDidZoom:正在縮放的代理方法 只要正在縮放,就會執(zhí)行此方法,所以此方法在縮放過程中會多次調(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:頁面控制器(配合UIScrollView使用),其父類是UIControl ??梢韵馼utton一樣添加事件,事件觸發(fā)使用UIControlEventsValueChanged。通常在Scrollview滾動的時候修改pageControl的currentPage屬性。
UIPageControl:初始化
```UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(self.view.frame.size.width, 700, 80, 20)];```
##UIPageControl常用屬性
numberOfPages:設(shè)置頁數(shù)
`pageControl.numberOfPages = 4;`

currentPage:設(shè)置當(dāng)前頁數(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)前的頁數(shù),使得scrollView也滑動到對應(yīng)的子視圖  通過設(shè)置scrollView的contentOffSet來實現(xiàn)(改變contentOffSet實際上就是改變scrollView的bounds)
    int page = (int)sender.currentPage;//得到當(dāng)前頁數(shù)
    //根據(jù)當(dāng)前頁數(shù)來計算偏移量
    //得到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];
}```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容