關情紙尾-----UIkit基礎-UIScrollView

1、UIScrolllView控件的簡單介紹ide

 

1.什麼是UIScrollView佈局

(1)移動設備的屏幕大小是極其有限的,所以直接展現在用戶眼前的內容也至關有限post

(2)當展現的內容較多,超出一個屏幕時,用戶可經過滾動手勢來查看屏幕之外的內容atom

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

(4)UIScrollView是一個可以滾動的視圖控件,能夠用來展現大量的內容,而且能夠經過滾動查看全部的內容3d

(5)舉例:手機上的「設置」、其餘示例程序 代理

 

2.UIScrollView的簡單使用方法code

(1)將須要展現的內容添加到UIScrollView中對象

(2)設置UIScrollView的contentSize屬性,告訴UIScrollView全部內容的尺寸,也就是告訴 它滾動的範圍(能滾多遠,滾到哪裏是盡頭) blog

 

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功能。其實也能夠用另外一種方法代替取消autolayout功能。以下

 

在控制器的View當中寫上這一句代碼.
self.view.translatesAutoresizingMaskIntoConstraints = NO;
在自動佈局的時候,它會自動轉一個東西.
它會把你的auotSize轉換成自動佈局
設置這句話
告訴它不要將autosizing轉換成自動佈局.

 

 

6.容易錯誤理解的地方

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

(2)contentinset(不帶*號的通常不是結構體就是枚舉),爲UIScrollView增長額外的滾動區域。(上,左,下,右)逆時針。contentinset可使用代碼或者是視圖控制器進行設置,但二者有區別(注意區分)。

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

(4)contentoffset是個CGpoint類型的結構體,用來記錄ScrollView的滾動位置,即記錄着「框」跑到了哪裏。知道了這個屬性,就知道了其位置,能夠經過設置這個屬性來控制這個「框」的移動。

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

(6)增長了額外區域後,contentoffset的原點在哪裏?其實是不包括額外區域的。

 

2、UIScrollView的代理(delegate)

♦不少時候,咱們想在UIScrollView正在滾動 或 滾動到某個位置 或者 中止滾動 時作一些特定的操做
 
♦要想完成上述功能,前提條件就是可以監聽到UIScrollView的整個滾動過程
 
♦當UIScrollView發生一系列的滾動操做時, 會自動通知它的代理(delegate)對象,給它的代理髮送相應的消息,讓代理得知它的滾動狀況
 
♦也就是說,要想監聽UIScrollView的滾動過程,就必須先給UIScrollView設置一個代理對象,而後經過代理得知UIScrollView的滾動過程
 注:要想成爲UIScrollView的delegate,是有條件的,必須遵照相應的協議,實現對應的方法才能監聽UIScrollView的滾動過程 
 
3、分頁

•只要將UIScrollView的pageEnabled屬性設置爲YES,UIScrollView會被分割成多個獨立頁面,裏面的內容就能進行分頁展現

•通常會配合UIPageControl加強分頁效果,UIPageControl經常使用屬性以下

♥一共有多少頁

@property(nonatomic) NSInteger numberOfPages;

♥當前顯示的頁碼

@property(nonatomic) NSInteger currentPage;

♥只有一頁時,是否須要隱藏頁碼指示器

@property(nonatomic) BOOL hidesForSinglePage;

♥其餘頁碼指示器的顏色

@property(nonatomic,retain) UIColor *pageIndicatorTintColor;

♥當前頁碼指示器的顏色

@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor;

4、NSTimer定時器

♦ NSTimer叫作「定時器」,它的做用以下

♥在指定的時間執行指定的任務

♥每隔一段時間執行指定的任務

 

♦ 調用下面的方法就會開啓一個定時任務

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

每隔ti秒,調用一次aTarget的aSelector方法,yesOrNo決定了是否重複執行這個任務

 

♦ 經過invalidate方法能夠中止定時器的工做,一旦定時器被中止了,就不能再次執行任務。只能再建立一個新的定時器才能執行新的任務

- (void)invalidate;

 
 
 
 
5、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 }

 

  

♥ 整理完畢,晚安啦 

相關文章
相關標籤/搜索