iOS-UIScrollView的使用

 關於無限循環輪播的方法:若是有5張圖片就5123451來設置html

6.9 UIScrollView
6.9.1 經常使用屬性

//這個屬性用來表示UIScrollView內容的尺寸,滾動範圍(能滾多遠)ios

self.scorllView.contentSize = CGSizeMake(imageW * IMAGE_COUNT, 0);app

 //這個屬性用來表示UIScrollView滾動的位置

CGPoint offset = [self.scorllView contentOffset];ide

 //設置UIScrollView滾動的位置

[self.scorllView setContentOffset:CGPointMake(-10, -10)]函數

[self.scorllView setContentOffset:CGPointMake(-10, -10) animated:YES];//動畫效果性能

 //設置或取消彈簧效果

self.scorllView.bounces = NO;動畫

 //這個屬性可以在UIScrollView的4周增長額外的滾動區域

self.scorllView.contentInset = UIEdgeInsetsMake(10, 10, 20, 30);spa

 //設置scrollView是否能夠滾動

self.scorllView.scrollEnabled = NO;代理

 //設置是否顯示橫向和縱向滾動條

self.scorllView.showsHorizontalScrollIndicator = NO;htm

self.scorllView.showsVerticalScrollIndicator = NO;

 //設置分頁

self.scrollView.pagingEnabled = YES;

 //實現縮放,需設置初始大小和縮放比例

self.scrollView.contentSize = self.miniView.image.size;

self.scrollView.maximumZoomScale = 2.0;

self.scrollView.minimumZoomScale = 0.2;
(1) ScrollView屬性

CGSize  contentSize:設置UIScrollView的滾動範圍

CGPoint  contentOffset:UIScrollView當前滾動的位置

UIEdgeInsets  contentInset:增長滾動視圖四周的增長滾動範圍

 ScrollView屬性

BOOL bounces​是否有彈簧效果

BOOL scrollEnabled​是否能滾動

BOOL showsHorizontalScrollIndicator​是否顯示水平方向的滾動條

BOOL showsVerticalScrollIndicator​是否顯示垂直方向的滾動條

UIScrollViewIndicatorStyle indicatorStyle​設定滾動條的樣式

BOOL dragging​是否正在被拖拽

BOOL tracking​按住手指尚未開始拖動的時候值是YES,不然NO

BOOL decelerating​是否正在減速

BOOL zooming​是否正在縮放

 (2) 手勢縮放

   [_scrollView setMinimumZoomScale:0.2]; // 指定最小縮放比例

   [_scrollView setMaximumZoomScale:2.0]; // 指定最大縮放比例

   [_scrollView setDelegate:self]; // 設置滾動視圖的代理

 <UISCrollViewDelegate> 
 #pragma mark  手勢所發代理代理方法

// 縮放中的代理方法

- (void)scrollViewDidZoom:(UIScrollView *)scrollView{

   NSLog(@"縮放中。。。");

}

// 縮放完成的代理方法

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{

   NSLog(@"縮放完成 %f", scale);

}

// 必定要記住:本代理方法的返回值就是「要縮放的視圖對象」

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

   return _imageView;

}

 (3) 分頁效果

要實現分頁效果,將滾動視圖的pagingEnabled屬性設置爲YES便可。設置該屬性後滾動視圖會被分割成多個獨立的頁面,用戶本來的滾動體驗會變成了頁面切換的效果

 

UIPageControl分頁控制控件(頁面下面的小點點)

UIPageControl屬性:

NSInteger numberOfPages:總頁數

NSInteger currentPage:當前的頁碼

BOOL hidesForSinglePage:當只有一頁的時候,是否要隱藏視圖

UIColor *currentPageIndicatorTintColor:當前選中頁面標示的顏色

UIColor *pageIndicatorTintColor:其餘頁面標示的顏色

代碼式例:

 // 增長分頁控件

   UIPageControl *pageControl = [[UIPageControl alloc]init];

   [pageControl setBounds:CGRectMake(0, 0, 150.0, 50.0)];

   [pageControl setCenter:CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height - 100.0)];

   [pageControl setNumberOfPages:2];

   [pageControl setCurrentPage:0]; 

   [pageControl setCurrentPageIndicatorTintColor:[UIColor redColor]]; 

   [pageControl setPageIndicatorTintColor:[UIColor blackColor]];
   [pageControl addTarget:self action:@selector(updatePageChanged:) forControlEvents:UIControlEventValueChanged]; // 小圓點被點擊方法
     [self.view addSubview:pageControl];// 添加到視圖中,而不是scroller中。
 #pragma mark - 分頁控件小圓點的監聽方法

- (void)updatePageChanged:(UIPageControl *)pageControl{ 

   CGFloat offsetX = pageControl.currentPage * _scroll.bounds.size.width;

   [_scroll setContentOffset:CGPointMake(offsetX, 0) animated:YES];

}

 #pragma mark - 滾動視圖代理方法

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

   NSInteger pageNo = scrollView.contentOffset.x / scrollView.bounds.size.width;   

   [_pager setCurrentPage:pageNo];
}
6.9.2 UIScrollViewDelegate協議方法

//實現viewForZoomingInScrollView方法,返回要縮放的控件實現縮放,scrollview有多個圖片時,只能縮放其中一個,返回那個圖片就縮放那個圖片

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

   return self.miniView;

}
// 當 offset改變的時候,時時觸發

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

 

6.10 UIPageControl

//設置總頁數

self.pageControl.numberOfPages = IMAGE_COUNT;

 //設置當前頁碼
self.pageControl.currentPage = num;
 
 

在使用UIScrollView和它的子類UITableView時,有時須要在不一樣操做狀態下,作不一樣的響應。

如何截獲這些狀態,如正在滾動,滾動中止等,使用UIScrollViewDelegate_Protocol

 

@interface SampleClass: UITableViewController<UIScrollViewDelegate> {

...

}

...

@end

 

@implement SampleClass

...

#pragma mark -
#pragma mark UIScrollViewDelegate

// 觸摸屏幕來滾動畫面仍是其餘的方法使得畫面滾動,皆觸發該函數
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"Scrolling...");
}

// 觸摸屏幕並拖拽畫面,再鬆開,最後中止時,觸發該函數
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    NSLog(@"scrollViewDidEndDragging  -  End of Scrolling.");
}

// 滾動中止時,觸發該函數

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSLog(@"scrollViewDidEndDecelerating  -   End of Scrolling.");
}

 

// 調用如下函數,來自動滾動到想要的位置,此過程當中設置有動畫效果,中止時,觸發該函數

// UIScrollView的setContentOffset:animated: 

// UIScrollView的scrollRectToVisible:animated:

// UITableView的scrollToRowAtIndexPath:atScrollPosition:animated:

// UITableView的selectRowAtIndexPath:animated:scrollPosition:

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
    NSLog(@"scrollViewDidEndScrollingAnimation  -   End of Scrolling.");
}

@end

相關文章
相關標籤/搜索