今天就講下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://up.2cto.com/2011/1130/20111130025112243.zip
作者Andy---清風