滾動視圖還滿常見的,這里學習了一下基本所有的用法、屬性設置和委托,單講一個ScrollView也很簡單,直接上代碼遠比一個個講要清晰明了地多。
//.h文件
@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
//.m文件
//初始化ScrollView,設定位置
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
self.scrollView.backgroundColor = [UIColor greenColor];
//設置顯示內容的大小,這里表示可以下滑十倍原高度
self.scrollView.contentSize = CGSizeMake(320, 460*10);
//設置當滾動到邊緣繼續滾時是否像橡皮經一樣彈回
self.scrollView.bounces = YES;
//設置滾動條指示器的類型,默認是白邊界上的黑色滾動條
self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleDefault;//還有UIScrollViewIndicatorStyleBlack、UIScrollViewIndicatorStyleWhite
//設置是否只允許橫向或縱向(YES)滾動,默認允許雙向
// self.scrollView.directionalLockEnabled = YES;
//設置是否采用分頁的方式
// self.scrollView.pagingEnabled = YES;
//設置是否允許滾動
// self.scrollView.scrollEnabled = NO;
//設置是否可以縮放
self.scrollView.maximumZoomScale = 2.0;//最多放大到兩倍
self.scrollView.minimumZoomScale = 0.5;//最多縮小到0.5倍
//設置是否允許縮放超出倍數限制,超出后彈回
self.scrollView.bouncesZoom = YES;
//設置委托
self.scrollView.delegate = self;
[self.view addSubview:self.scrollView];
//創建兩個label顯示在ScrollerView中,第二個要滾動才能看見
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 200, 320, 40)];
label.backgroundColor = [UIColor yellowColor];
label.text = @"Study UIScrollView";
[self.scrollView addSubview:label];
UILabel *secondLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 800, 320, 40)];
secondLabel.backgroundColor = [UIColor yellowColor];
secondLabel.text = @"Next Label";
[self.scrollView addSubview:secondLabel];
//委托方法
#pragma mark - UIScrollViewDelegate
//返回縮放時所使用的UIView對象
- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return scrollView;
}
//開始縮放時調用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
}
//結束縮放時調用,告知縮放比例
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
}
//已經縮放時調用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
}
//確定是否可以滾動到頂部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{
return YES;
}
//滾動到頂部時調用
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{
}
//已經滾動時調用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
}
//開始進行拖動時調用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
}
//抬起手指停止拖動時調用,布爾值確定滾動到最后位置時是否需要減速
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
}
//如果上面的方法決定需要減速繼續滾動,則調用該方法,可以讀取contentOffset屬性,判斷用戶抬手位置(不是最終停止位置)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
}
//減速完畢停止滾動時調用,這里的讀取contentOffset屬性就是最終停止位置
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
}
這里在view中添加了一個設置了大小的ScrollView,在ScrollView中添加了兩個Label,兩個Label的開始y值不同所以第一個一開始就能看見,而第二個要向下滾動才能看見,如圖:
image.png
由于截圖時間來不及所以第二張圖看不到滾動條了,但是是滾動下來才能看得見:
image.png
基本方法代碼中的注釋已經講的很清楚了,如果有不太清楚的可以自己試著調一下,也可以一起討論討論~
可以在github上下載我的工程:https://github.com/Cloudox/UIScrollViewTest