UIScrollView滾動視圖高級功能、協議方法

  • .userInteractionEnabled 是否允許通過點擊屏幕讓滾動視圖響應事件
    YES接收觸碰事件
    NO不接受
  • .contentOffset 滾動視圖畫布的移動位置,決定畫布顯示的最終圖像效果
  • (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;
    讓滾動視圖移動到指定的位置,動畫移動,一般在touchesBegan方法中設置
  • scrollViewWillBeginDragging:(UIScrollView *)scrollView
    滾動視圖即將開始被拖動時調用
  • (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
    當滾動視圖結束拖動時調用此函數
  • (void) scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
    滾動視圖即將結束拖動時調用
  • (void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
    視圖即將開始減速時調用
  • (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView
    視圖已經結束減速時期,視圖停止的瞬間調用

具體使用:

//聲明文件中聲明成員變量
@interface ViewController : UIViewController <UIScrollViewDelegate> {
    UIScrollView* _scrollView;
}
@end

//實現文件中
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    //創建滾動視圖
    _scrollView =[[UIScrollView alloc]init];
    
    //設定滾動視圖的位置
    _scrollView.frame=CGRectMake(10, 50, 300, 400);
    
    //取消彈動效果
    _scrollView.bounces=NO;
    
    //是否允許通過點擊屏幕讓滾動視圖響應事件
    // YES:滾動視圖可以接受觸碰事件
    // NO:不接受觸碰事件
    // _scrollView.userInteractionEnabled=NO;
    _scrollView.userInteractionEnabled=YES;
    
    //設置畫布的大小,縱向效果
    _scrollView.contentSize=CGSizeMake(300, 400*9);
    
    for(int i=0;i<10;i++){
        //生成圖片名稱
        NSString* strName =[NSString stringWithFormat:@"icon%d",i+1];
        UIImage *image = [UIImage imageNamed:strName];
        //創建圖像視圖對象
        UIImageView * iView = [[UIImageView alloc]init];
        //圖像賦值
        iView.image=image;
        //設置圖像視圖在滾動視圖畫布中的位置
        iView.frame=CGRectMake(0, 400*i, 300, 400);
        [_scrollView addSubview:iView];
        
    }
    
    [self.view addSubview:_scrollView];
    
    //取消按頁滾動效果
    _scrollView.pagingEnabled=NO;
    //    _scrollView.pagingEnabled=YES;
    
    //滾動視圖畫布的移動位置,偏移位置
    //功能:決定畫布顯示的最終圖像結果
    _scrollView.contentOffset=CGPointMake(0,0);
    
    //當前視圖控制器作為代理對象
    _scrollView.delegate=self;
}

-(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    //    _scrollView.contentOffset=CGPointMake(0, 0);//點擊空白處,直接跳到設定的坐標位置
    //讓滾動視圖移動到指定位置,動畫移動
    [_scrollView scrollRectToVisible:CGRectMake(0, 0, 300, 400) animated:YES];
}

//當滾動視圖移動時,只要offset坐標發生變化,都會調用此函數
//參數:調用此協議的滾動視圖對象
//可以使用此函數來監控滾動視圖的位置
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
    
    NSLog(@"Y=%f",scrollView.contentOffset.y);
}

//當滾動視圖結束拖動時調用此函數
- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    NSLog(@"Did End Drag");
}

//滾動視圖即將開始被拖動時
-(void) scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    NSLog(@"WillBeginDrag");
}

//視圖即將結束拖動時調用
-(void) scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
    NSLog(@"Will End Drag");
}

//視圖即將減速時調用
-(void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
    NSLog(@"Will Begin Decelerating");
}

//視圖已經結束減速時調用,視圖停止的瞬間調用
-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    NSLog(@"視圖停止移動");
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本節學習內容: 1.滾動視圖的高級屬性 2.滾動視圖的協義函數 3.滾動視圖的高級使用 【ViewControll...
    奔跑的小小魚閱讀 580評論 0 0
  • 掌握 UIScrollView的常見屬性 UIScrollView的常用代理方法 UIScrollView的縮放 ...
    JonesCxy閱讀 2,770評論 1 12
  • 極光推送: 1.JPush當前版本是1.8.2,其SDK的開發除了正常的功能完善和擴展外也緊隨蘋果官方的步伐,SD...
    Isspace閱讀 6,793評論 10 16
  • 今天,思修課講的是理想,老師讓我們談談自己的夢想,我主動上去講了,雖然我覺得夢想是一個很有分量的詞匯,就像人內心...
    蛋蛋妮閱讀 446評論 0 1
  • 為什么想要開始? 這些年,不記得從什么時候開始,忘記了自己曾經想以寫作作為自己的一生的職業 ,這些...
    六塊八毛三閱讀 257評論 0 0