UIScrollView的常見(jiàn)屬性
@property(nonatomic) CGPoint contentOffset;----偏移量
- 這個(gè)屬性用來(lái)表示UIScrollView滾動(dòng)的位置(其實(shí)就是內(nèi)容左上角與scrollView左上角的間距值)
@property(nonatomic) CGSize contentSize;
- 這個(gè)屬性用來(lái)表示UIScrollView內(nèi)容的尺寸至朗,滾動(dòng)范圍(能滾多遠(yuǎn))
@property(nonatomic) UIEdgeInsets contentInset;
- 這個(gè)屬性能夠在UIScrollView的4周增加額外的滾動(dòng)區(qū)域憎账,一般用來(lái)避免scrollView的內(nèi)容被其他控件擋住
UIScrollView的其他屬性
@property(nonatomic) BOOL bounces;
- 設(shè)置UIScrollView是否需要彈簧效果
@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
- 設(shè)置UIScrollView是否能滾動(dòng)
@property(nonatomic) BOOL showsHorizontalScrollIndicator;
- 是否顯示水平滾動(dòng)條
@property(nonatomic) BOOL showsVerticalScrollIndicator;
- 是否顯示垂直滾動(dòng)條
UIScrollView的基本使用
UIScrollView的用法很簡(jiǎn)單
- 將需要展示的內(nèi)容添加到UIScrollView中
- 設(shè)置UIScrollView的contentSize屬性,告訴UIScrollView所有內(nèi)? 容的尺寸两芳,也就是告訴它滾動(dòng)的范圍(能滾多遠(yuǎn)我擂,滾到哪里是盡頭)
UIScrollView顯示內(nèi)容的小細(xì)節(jié)
- 超出UIScrollView邊框的內(nèi)容會(huì)被自動(dòng)隱藏
- 用戶可以用過(guò)手勢(shì)拖動(dòng)來(lái)查看超出邊框并被隱藏的內(nèi)容
UIScrollView無(wú)法滾動(dòng)的解決辦法
如果UIScrollView無(wú)法滾動(dòng),可能是以下原因:
- 沒(méi)有設(shè)置contentSize
- scrollEnabled = NO
- 沒(méi)有接收到觸摸事件:userInteractionEnabled = NO
UIScrollView的代理(delegate)
- 很多時(shí)候,我們想在UIScrollView正在滾動(dòng) 或 滾動(dòng)到某個(gè)位置 或者 停止?jié)L動(dòng) 時(shí)做一些特定的操作
- 要想完成上述功能粪小,前提條件就是能夠監(jiān)聽(tīng)到UIScrollView的整個(gè)滾動(dòng)過(guò)程
- 當(dāng)UIScrollView發(fā)生一系列的滾動(dòng)操作時(shí)趟畏, 會(huì)自動(dòng)通知它的代理(delegate)對(duì)象贡歧,給它的代理發(fā)送相應(yīng)的消息,讓代理得知它的滾動(dòng)情況
- 也就是說(shuō)赋秀,要想監(jiān)聽(tīng)UIScrollView的滾動(dòng)過(guò)程利朵,就必須先給UIScrollView設(shè)置一個(gè)代理對(duì)象,然后通過(guò)代理得知UIScrollView的滾動(dòng)過(guò)程
UIScrollView和delegate的通信
成為delegate的條件
/**
* 即將開(kāi)始拖拽的時(shí)候調(diào)用
*/
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"scrollViewWillBeginDragging------");
}
/**
* 結(jié)束拖拽的時(shí)候調(diào)用
*/
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"scrollViewDidEndDragging------");
}
/**
* (減速完畢)由于慣性停止?jié)L動(dòng)的時(shí)候調(diào)用
*/
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidEndDecelerating------");
}
UIScrollView和控制器
縮放實(shí)現(xiàn)步驟
- 設(shè)置UIScrollView的iddelegate代理對(duì)象
- 設(shè)置minimumZoomScale :縮小的最小比例
- 設(shè)置maximumZoomScale :放大的最大比例
- 讓代理對(duì)象實(shí)現(xiàn)下面的方法猎莲,返回需要縮放的視圖控件
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
- 跟縮放相關(guān)的其他代理方法
- 縮放完畢的時(shí)候調(diào)用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
正在縮放的時(shí)候調(diào)用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
分頁(yè)
只要將UIScrollView的pageEnabled屬性設(shè)置為YES绍弟,UIScrollView會(huì)被分割成多個(gè)獨(dú)立頁(yè)面,里面的內(nèi)容就能進(jìn)行分頁(yè)展示
- 一般會(huì)配合UIPageControl增強(qiáng)分頁(yè)效果著洼,UIPageControl常用屬性如下
- 一共有多少頁(yè)
@property(nonatomic) NSInteger numberOfPages;
- 當(dāng)前顯示的頁(yè)碼
@property(nonatomic) NSInteger currentPage;
- 只有一頁(yè)時(shí)樟遣,是否需要隱藏頁(yè)碼指示器
@property(nonatomic) BOOL hidesForSinglePage;
- 其他頁(yè)碼指示器的顏色
@property(nonatomic,retain) UIColor *pageIndicatorTintColor;
- 當(dāng)前頁(yè)碼指示器的顏色
@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor;