UIScrollView 基本屬性 及 常用代理方法

- (void)viewDidLoad
{
    [super viewDidLoad];

    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    scrollView.backgroundColor = [UIColor redColor];
    // 是否支持滑動最頂端
//    scrollView.scrollsToTop = NO;
    scrollView.delegate = self;
    // 設置內容大小
    scrollView.contentSize = CGSizeMake(320, 460*10);
    // 是否反彈
//    scrollView.bounces = NO;
    // 是否分頁
//    scrollView.pagingEnabled = YES;
    // 是否滾動
//    scrollView.scrollEnabled = NO;
//    scrollView.showsHorizontalScrollIndicator = NO;
    // 設置indicator風格
//    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    // 設置內容的邊緣和Indicators邊緣
//    scrollView.contentInset = UIEdgeInsetsMake(0, 50, 50, 0);
//    scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 50, 0, 0);
    // 提示用戶,Indicators flash
    [scrollView flashScrollIndicators];
    // 是否同時運動,lock
    scrollView.directionalLockEnabled = YES;
    [self.view addSubview:scrollView];
    
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 200, 320, 40)];
    label.backgroundColor = [UIColor yellowColor];
    label.text = @"學習scrolleview";
    [scrollView addSubview:label];
    [label release];

}


UIScrollView的判斷位置的屬性如下:

  • contentSize:CGSize類型,scrollview可以滑動的區域,例如,一個view的frame爲(0,0,320,480),而scrollview的contentSize爲(320,1080),則表示scrollView的垂直滑動區域爲整個屏幕的3倍。
  • contentView:scrollview的內容顯示區域,一般情況下和scrollview的contentsize保持一致。
  • contentOffset:CGPoint類型,它表示scrollView當前的顯示區域頂點相對於frame頂點的偏移量,如在上面的例子中,如果某一時刻contentOffset的值爲(0,960),就表示scrollview的偏移量爲(0,960)。
  • contentInset:UIEdgeInsets類型,srollciew的contentView的頂點相對於scrollview的位置,它標識了contenView開始顯示的位置,這個屬性和css以及xaml中的margin屬性類似。

知道了上面幾個概念後,要判斷srollciew是否滑到底部就容易多了,代碼如下:

  CGPoint offset = scrollView.contentOffset;

CGRect bounds = scrollView.bounds;

CGSize size = scrollView.contentSize;

UIEdgeInsets inset = scrollView.contentInset;

CGFloat currentOffset = offset.y + bounds.size.height – inset.bottom;

CGFloat maximumOffset = size.height;

currentOffsetmaximumOffset的值相等時,即說明scrollview已經滑到底部了。


常用代理方法:

#pragma mark - 
/*
// 返回一個放大或者縮小的視圖
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    
}
// 開始放大或者縮小
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:
(UIView *)view
{
    
}


// 縮放結束時
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
    
}
 
// 視圖已經放大或縮小
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidScrollToTop");
}
 */


// 是否支持滑動至頂部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
    return YES;
}


// 滑動到頂部時調用該方法
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidScrollToTop");
}


// scrollView 已經滑動
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidScroll");
}


// scrollView 開始拖動
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewWillBeginDragging");
}


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


// scrollView 開始減速(以下兩個方法注意與以上兩個方法加以區別)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewWillBeginDecelerating");
}


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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章