天天看點

UIScrollView滾動條的使用

// 初始化
    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 20, 280, 440)];
           

scrollView 的一些設定

// 設定滾動的範圍
    self.scrollView.contentSize = CGSizeMake(280 * 4, 0);
   
    // 螢幕左上角距離坐标原點的偏移量  scrollView相對于滾動範圍的坐标
    self.scrollView.contentOffset = CGPointMake(100, 100);

    // 可滾動的範圍距離上左下右的距離
    self.scrollView.contentInset = UIEdgeInsetsMake(100, 50, 0, 0);

    // 邊界是否回彈 預設YES
    self.scrollView.bounces = NO;
    
    // 滑動到頂部(點狀态條的時候)
    self.scrollView.scrollsToTop = YES;

    // 是否允許使用者滾動
    self.scrollView.scrollEnabled = NO;
    
    // 是否整屏翻動
    self.scrollView.pagingEnabled = YES;
    
    // 控制是否顯示水準方向的滾動條
    // 訓示條 實際上是加在scrollView上的兩個imageView
    self.scrollView.showsHorizontalScrollIndicator = NO;
    
    // 控制是否顯示垂直方向的滾動條
    self.scrollView.showsVerticalScrollIndicator = NO;
           
// scrollView的協定
    // 1,簽訂協定
    // 2,指定代理
    self.scrollView.delegate = self;
    
    // scrollView放大縮小
    
    // 1,設定scrollView縮放的範圍
    self.scrollView.maximumZoomScale = 2.0;   // 最大2倍
    self.scrollView.minimumZoomScale = 0.5;
    
    
    [self.view addSubview:self.scrollView];
    [_scrollView release];
           

scrollView的協定方法

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"%@", NSStringFromCGPoint(scrollView.contentOffset));
    NSLog(@"偏移量改變");
    
    // 偏移量改變的時候,計算目前的頁數
    int pageNumber = scrollView.contentOffset.x / scrollView.frame.size.width;
    
    // 通過偏移量改變pageControl的值
    self.pageControl.currentPage = pageNumber;
}
           
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"将要開始拖拽");
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"已經結束拖拽");
    
}

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"将要開始減速");
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"已經減速停止");
}
           

UIPageController 頁碼

self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(20, 20, 280, 50)];
    self.pageControl.backgroundColor = [UIColor blackColor];
    // 頁數
    self.pageControl.numberOfPages = 4;
    // 設定小圓點的顔色
    self.pageControl.currentPageIndicatorTintColor = [UIColor greenColor];
    // 未被選中點的顔色
    self.pageControl.pageIndicatorTintColor = [UIColor redColor];
    // 綁定一個方法
    [self.pageControl addTarget:self action:@selector(pageControlAction:) forControlEvents:UIControlEventValueChanged];
    
//    self.pageControl.currentPage = 4;
    
    [self.view addSubview:self.pageControl];
    [_pageControl release];
           

協定方法

- (void)pageControlAction:(UIPageControl *)pageControl
{
    NSLog(@"目前頁:%d",
          pageControl.currentPage);
    
    // 計算scrollView的偏移量
    CGFloat xOffset = pageControl.currentPage * 280;
    CGPoint offset = CGPointMake(xOffset, 0);
//    [self.scrollView setContentOffset:offset animated:YES];                   
    self.scrollView.contentOffset = offset;
    
}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    // 傳回一個view 跟着scrollView縮放
    // 1,會把contentSize 設定為view的大小
    // 2,同時隻能有一個view跟着scrollView縮放
    return [scrollView.subviews firstObject];
}
           

繼續閱讀