關情紙尾-----IOS學習之UIScrollView

來源:互聯網
上載者:User

標籤:

一、UIScrolllView控制項的簡單介紹

 

1.什麼是UIScrollView

(1)行動裝置的螢幕大小是極其有限的,因此直接展示在使用者眼前的內容也相當有限

(2)當展示的內容較多,超出一個螢幕時,使用者可通過滾動手勢來查看螢幕以外的內容

(3)普通的UIView不具備滾動功能,不能顯示過多的內容

(4)UIScrollView是一個能夠滾動的視圖控制項,可以用來展示大量的內容,並且可以通過滾動查看所有的內容

(5)舉例:手機上的“設定”、其他樣本程式 

 

2.UIScrollView的簡單使用方法

(1)將需要展示的內容添加到UIScrollView中

(2)設定UIScrollView的contentSize屬性,告訴UIScrollView所有內容的尺寸,也就是告訴 它滾動的範圍(能滾多遠,滾到哪裡是盡頭) 

 

3.UIScrollView的常用屬性

CGPoint contentOffSet 監控目前控制項滾動的位置
CGSize contentSize 滾動範圍的大小
UIEdgeInserts contentInsert 設定ScrollView的四周邊距
id<UIScrollerViewDelagate>delagate 設定協議
BOOL showsHorizontalScrollIndicator 控制是否顯示水平方向的捲軸
BOOL showsVerticalScrollIndicator 控制是否顯示垂直方向的捲軸
float minimumZoomScale 縮小的最小比例
float maximumZoomScale 放大的最大比例
BOOL bouncesZoom 控制縮放的時候是否會反彈

 

 

 

 

 

 

 

 

 

4.幾個常用屬性

                       

 

5.如果無法滾動,可能存在以下原因

♥ 沒有設定contentSize

♥ scrollEnable = NO

♥ 沒有接收到觸摸事件:userInteractionEnabled = NO

♥ 沒有取消autolayout功能(暫時還不知道如果不取消這個還有沒有其他辦法耶)

 

6.容易錯誤理解的地方

(1)UIScrollView的frame與contentsize屬性的區分:UIScrollView的frame指的是這個scrollview的可視範圍(可看見的地區),contentsize是其滾動範圍。

(2)contentinset(不帶*號的一般不是結構體就是枚舉),為UIScrollView增加額外的捲動區域。(上,左,下,右)逆時針。contentinset可以使用代碼或者是視圖控制器進行設定,但兩者有區別(注意區分)。

(3)contentsize屬性只能使用代碼設定。

(4)contentoffset是個CGpoint類型的結構體,用來記錄ScrollView的滾動位置,即記錄著“框”跑到了哪裡。知道了這個屬性,就知道了其位置,可以通過設定這個屬性來控制這個“框”的移動。

(5)不允許直接修改某個對象內部結構體屬性的成員,三個步驟(先拿到值,修改之,再把修改後的值賦回去)。

(6)增加了額外地區後,contentoffset的原點在哪裡?實際上是不包括額外地區的。

 

二、UIScrollView的代理(delegate)

♦很多時候,我們想在UIScrollView正在滾動 或 滾動到某個位置 或者 停止滾動 時做一些特定的操作 ♦要想完成上述功能,前提條件就是能夠監聽到UIScrollView的整個滾動過程 ♦當UIScrollView發生一系列的滾動操作時, 會自動通知它的代理(delegate)對象,給它的代理髮送相應的訊息,讓代理得知它的滾動情況 ♦也就是說,要想監聽UIScrollView的滾動過程,就必須先給UIScrollView設定一個代理對象,然後通過代理得知UIScrollView的滾動過程 注:要想成為UIScrollView的delegate,是有條件的,必須遵守相應的協議,實現對應的方法才能監聽UIScrollView的滾動過程   三、UIScrollView控制項實現圖片縮放 1.關於縮放有些時候,我們可能要對某些內容進行手勢縮放,如UIScrollView不僅能滾動顯示大量內容,還能對其內容進行縮放處理。也就是說,要完成縮放功能的話,只需要將需要縮放的內容添加到UIScrollView、 2.縮放原理當使用者在UIScrollView身上使用捏合手勢時,UIScrollView會給代理髮送一條訊息,詢問代理究竟要縮放自己內部的哪一個子控制項(哪一塊內容)當使用者在UIScrollView身上使用捏合手勢時,UIScrollView會調用代理的viewForZoomingInScrollView:方法,這個方法返回的控制項就是需要進行縮放的控制項。 3.實現縮放功能(1)控制器遵守代理協議<UIScrollView> (2)設定代理(3)調用代理方法,返回需要實現縮放功能的子控制項(4)設定縮放的範圍(最大和最小比例)
 1 //當使用者開始使用捏合手勢的時候 2 -(UIView *)viewForZoomingInScrolllView:(UIScrollView *)scrollView 3 { 4 //返回的控制項就是需要縮放的 5 return self.mimoView;    //mimoView控制項已經設定為一個屬性 6 } 7  8  9 //正在使用捏合手勢10 -(void)scrollViewDidZoom:(UIScrollView *)scrollview{11 }

 

 

 

♥ 小小的做了個筆記,晚安啦 

 

關情紙尾-----IOS學習之UIScrollView

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.