Iphone應用開發之五: UIScrollView的詳細講解

來源:互聯網
上載者:User

今天就講下UIScrollView的一些事情,這個可以拖動的組件無論在應用還是遊戲開發都會經常用到,所以我們就一定要更加熟悉它了。下面我們開始下手咯。

(1)初始化

一般的組件初始化都可以alloc和init來初始化,上一段代碼初始化。

view plain

UIScrollView *sv  =[[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0,self.view.frame.size.width, 400)]; 

 

 

一般的初始化也都有很多方法,都可以確定組件的Frame,或者一些屬性,比如UIButton的初始化可以確定Button的類型。當然,我比較提倡大家用代碼來寫,這樣比較瞭解整個代碼執行的流程,而不是利用IB來弄布局,確實很多人都用IB來布局會省很多時間,但這個因人而異,我比較提倡純程式碼寫。

 

(2)滾動屬性

UIScrollView的最大屬性就是可以滾動,那種效果很好看,其實滾動的效果主要的原理是修改他的座標,準確的講是修改原點座標,而UIScrollView跟其他組件的都一樣,有自己的delegate,在.h檔案中要繼承UIScrollView的delegate然後在.m檔案的viewDidLoad設定的delegate為self。如下:

 

view plain

sv.pagingEnabled = YES; 

sv.backgroundColor = [UIColor blueColor]; 

sv.showsVerticalScrollIndicator = NO; 

sv.showsHorizontalScrollIndicator = NO; 

sv.delegate = self; 

 

CGSize newSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height); 

[sv setContentSize:newSize]; 

 

[self.view addSubview: sv]; 

 

 

 

在上面的代碼中,一定要設定UIScrollView的pagingEnable為YES。不然你就是設定好了其他屬性,它還是無法拖動,接下去的分別是設定背景顏色和是否顯示水平和豎直拖動條,最後最重要的設定他的ContentSize,ContentSize的意思就是它所有內容的大小,這個和它的Frame是不一樣的,只有ContentSize的大小大於Frame這樣才可以支援拖動。

 

(3)結合UIPageControl做新聞翻頁效果

初始化UIPageControl的方法都很簡單,就是上面講的alloc和init,不過大家要記住的一點就是如果你定義了全域變數一定要在delloc那裡釋放掉。

 

UIPageControl有一個userInteractionEnabled你可以設定它為NO。就是點擊的時候它不調用任何方法。然後設定它的currentPage 為0,並把它加到view上去。

 

接下來在UIScrollView的delegate方法:

view plain

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;   

 

 

在這裡你可以寫上關於UIPageControl的版面設定的演算法。如下

 

view plain

int index = fabs(scrollView.contentOffset.x) /scrollView.frame.size.width; 

 

pageControl.currentPage = index; 

 

 

(4)其他的

UIScrollView還支援處理縮放的動作,比片的縮小或者地圖。

但是必須實現它的委託viewForZoomingInScrollView:

scrollViewDidEndZooming:withView:atScale:然後它的兩個屬性maximumZoomScale和minimumZoomScale 要不一樣。這樣就能基本實現圖片的縮放了。

 

好了,今天講UIScrollView和UIPageControl就到這裡咯,希望大家都能理解。歡迎拍磚。

附加一個photo的利用UIScrollView實現的demo給大家: http://www.bkjia.com/uploadfile/2011/1130/20111130025112243.zip

 

作者Andy---清風
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.