UIScrollView 的用法之詳解


·UIScrollView的基本用法

  • 將需要展示的內容添加到UIScrollView
  • 設置UIScrollViewcontentSize屬性,告訴UIScrollView所有內容的尺寸,也就是告訴它滾動的範圍.@property(nonatomic) CGSize contentSize;
  • 這個屬性用來表示UIScrollView內容的尺寸,滾動範圍(能滾多遠)

 

  • @property(nonatomic) CGPoint contentOffset;
  • 這個屬性用來表示UIScrollView初始偏移的位置

 

  • @property(nonatomic) UIEdgeInsets contentInset;
  • 這個屬性能夠在UIScrollView4周增加額外的滾動區域

 

- (void)viewDidLoad

{

    [super viewDidLoad];

    //  設置UIScrollView的滾動範圍

    self.scrollView.contentSize=self.imageView.bounds.size;

    //設置UIScrollView的偏移位置

    self.scrollView.contentOffset=CGPointMake(-10, -20);

    //設置UIScrollView的邊距

    self.scrollView.contentInset=UIEdgeInsetsMake(10, 20, 30, 40);

}

注:1、偏移位置中,當數都爲負數時,是向內側偏移。都爲正數時,則向外側偏移。

         2、邊距的默認方向是逆時針方向。即上左下右

UIScrollView的其它屬性

    //設置是否需要彈簧效果

   self.scrollView.bounces=NO;

    //設置UIScrollView是否能滾動

 //   self.scrollView.scrollEnabled=NO;

    //設置水平滾動條是否顯示

    self.scrollView.showsHorizontalScrollIndicator=NO;

    //設置垂直滾動條是否顯示

    self.scrollView.showsVerticalScrollIndicator=NO;

 

UIScrollView無法滾動的解決辦法

  • 如果UIScrollView無法滾動,可能是以下原因:
  • 沒有設置contentSize
  • scrollEnabled = NO
  • 沒有接收到觸摸事件:userInteractionEnabled = NO
  • 沒有取消autolayout功能(要想scrollView滾動,必須取消autolayout

  • 圖片縮放的代碼實現

 

實現捏合手勢放大縮小的步驟1

//設置代理

self.scrollView.delegate = self;

//設置最大和最小的縮放比例

self.scrollView.maximumZoomScale = 2.0;

self.scrollView.minimumZoomScale = 0.5;2、調用代理的方法

/**
* 當用戶使用捏合手勢的時候調用
*
* @param scrollView
*
* @return
返回的就是要縮放的是哪一個控件*/

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

        return self.imageView;
    }

 

 


scrollView的代理方法

很多時候,我們想在UIScrollView正在滾動或 滾動到某個位置 或者 停止滾動 時做一些特定的操作

要想完成上述功能,前提條件就是能夠監聽到UIScrollView的整個滾動過程

UIScrollView發生一系列的滾動操作時,會自動通知它的代理 (delegate)對象,給它的代理髮送相應的消息,讓代理得知它的滾動 情況

也就是說,要想監聽UIScrollView的滾動過程,就必須先給UIScrollView設置一個代理對象,然後通過代理得知UIScrollView的滾 動過程

一、設置scrollView的代理

1、先讓controller遵守UIScrollViewDelegate協議

2、設置scrollView的代理爲controller

3、設置代理的方法(代理的名字都以類的名字開始,代理的方法也是 以對象的名字開始)

 

#pragma mark - scrollView的代理方法

//開始滾動

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

 

    NSLog(@"scrollViewWillBeginDragging");

 

}

//正在滾動

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

 

    NSLog(@"scrollViewDidScroll");

   

    NSLog(@"%f  ---%f",scrollView.contentOffset.x,scrollView.contentOffset.y);

 

 

}

//結束滾動

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollViewwillDecelerate:(BOOL)decelerate

{

    NSLog(@"scrollViewDidEndDragging");

   

}

 

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