1.UIScrollView基本屬性
移動(dòng)設(shè)備的屏幕大小是極其有限的,因此直接展示在用戶眼前的內(nèi)容也相當(dāng)有限
當(dāng)展示的內(nèi)容較多塘安,超出一個(gè)屏幕時(shí)刻剥,用戶可通過(guò)滾動(dòng)手勢(shì)來(lái)查看屏幕以外的內(nèi)容
普通的UIView不具備滾動(dòng)功能,不適合顯示過(guò)多的內(nèi)容
UIScrollView是一個(gè)能夠滾動(dòng)的視圖控件,可以用來(lái)展示大量的內(nèi)容碍论,并且可以通過(guò)滾動(dòng)查看所有的內(nèi)容
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)
,可能是以下原因:
沒有設(shè)置contentSize
scrollEnabled = NO
沒有接收到觸摸事件:userInteractionEnabled = NO
… …
@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)容被其他控件擋住
@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)條
2.<UIScrollViewDelegate>
代理設(shè)計(jì)模式 http://www.reibang.com/p/f3d36926b01e
3.內(nèi)容縮放
有些時(shí)候,我們可能要對(duì)某些內(nèi)容進(jìn)行手勢(shì)縮放:
UIScrollView不僅能滾動(dòng)顯示大量?jī)?nèi)容概行,還能對(duì)其內(nèi)容進(jìn)行縮放處理
也就是說(shuō)蠢挡,要完成縮放功能的話,只需要將需要縮放的內(nèi)容添加到UIScrollView中
UIScrollView的縮放原理:
當(dāng)用戶在UIScrollView身上使用捏合手勢(shì)時(shí)凳忙,UIScrollView會(huì)給代理發(fā)送一條消息业踏,詢問代理究竟要縮放自己內(nèi)部的哪一個(gè)子控件(哪一塊內(nèi)容)
當(dāng)用戶在UIScrollView身上使用捏合手勢(shì)時(shí),UIScrollView會(huì)調(diào)用代理的viewForZoomingInScrollView:
方法涧卵,這個(gè)方法返回的控件就是需要進(jìn)行縮放的控件 (Zooming In 放大 Zooming Out 縮小)
設(shè)置UIScrollView的id<UISCrollViewDelegate> delegate代理對(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
4.分頁(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;