UIScrollView語法用法樣例

#import "RootViewController.h"

#define kScreenSize [UIScreen mainScreen].bounds.size
#define kPrintDebug NSLog(@"%s",__func__)


@interface RootViewController ()<UIScrollViewDelegate>
{
    
    UIScrollView *_scrollView;
}
@end

@implementation RootViewController
- (void)dealloc {
    [_scrollView release];
    [super dealloc];
}
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor lightGrayColor];
    [self creatScrollView];
}
/*
 
 - imageNamed:
 - imageWithContentsOfFile:
 區別:
 1.- imageNamed: 加載圖片
    第一次 加載的時候 會把圖片從app包內(手機磁盤) 加載到手機內存的緩存中,下次若是再加載相同的圖片那麼直接從緩存中加載,提升效率。可是緩存是有限的,app程序都要用到緩存,若是緩存低了那麼直接影響app 運行效率。- imageNamed:方式加載的對象 是不釋放的
    應用場合:加載小圖片 (幾kb 幾十kb),少許圖片
 
 2.- imageWithContentsOfFile: 加載圖片
 每次調用都會從app包內(磁盤) 中 獲取,用完以後 也會自動釋放。可是相對於- imageNamed:加載效率低一些
 
 */

- (void)creatScrollView {
    
    
    //實例化一個滾動視圖對象
    //內容 是能夠滾動的
    _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, kScreenSize.width, kScreenSize.height-90)];
    
    //UIImage *image = [UIImage imageNamed: @"car4"];
    
    //獲取圖片在app包內的路徑
    NSString *path = [[NSBundle mainBundle] pathForResource:@"girl" ofType:@"jpg"];
    UIImage *image = [UIImage imageWithContentsOfFile:path];
    //設置圖片的真實大小
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
    imageView.image = image;
    //粘貼到滾動視圖
    [_scrollView addSubview:imageView];
    [imageView release];
    
   //背景顏色
    _scrollView.backgroundColor = [UIColor redColor];
    
    //1.滾動視圖的內容通常要大於 滾動視圖的範圍
    //2.設置 滾動視圖的 滾動範圍 (滾動範圍 通常就是 內容的大小範圍)
    // 滾動區域範圍 > 滾動視圖的範圍
    
    //設置滾動視圖的滾動區域範圍(要想滾動必須設置滾動內容大小)
    _scrollView.contentSize = imageView.bounds.size;
    
    //設置回彈(默承認以回彈)
    _scrollView.bounces = YES;
    
    //顯示或者隱藏 滾動條 默認顯示
    _scrollView.showsHorizontalScrollIndicator = NO;//水平
    _scrollView.showsVerticalScrollIndicator = NO;//豎直
    //設置 是否能夠滾動  NO禁用滾動
    //_scrollView.scrollEnabled = NO;
    
    //設置方向鎖
    _scrollView.directionalLockEnabled = YES;//同時容許一個方向滾動
    
    //設置 內容 偏移量(相對於 粘到到滾動視圖的位置滾動偏移)
    
    //若是偏移量CGPointMake(-50 ,-50) 內容會向 右 下偏移
    //若是偏移量CGPointMake(50 ,50)   內容會向 左 上偏移
    
    //_scrollView.contentOffset = CGPointMake(-50 ,-50);
    
    //點擊狀態欄是否能夠滾動到內容視圖的頂部
    _scrollView.scrollsToTop = YES;
    
    //設置縮放(必須設置代理 實現協議的方法)
    //實現- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    _scrollView.minimumZoomScale = 0.5;
    _scrollView.maximumZoomScale = 2.0;
    
    //設置代理
    _scrollView.delegate = self;
    
    //self.view當前視圖是RootViewVontroller,
    [self.view addSubview:_scrollView];
}
#pragma mark - UIScrollViewDelegate
//經常使用1
//當 縮放 滾動視圖 的視圖 通知代理 返回一個指定 內容視圖
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    //返回須要縮放的視圖地址
    //當前滾動視圖中只有 一個 視圖
    return scrollView.subviews[0];
}
//經常使用2
//手指 將要拖拽滾動視圖的時候調用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    kPrintDebug;
}
//經常使用3
//滾動視圖滾動的時候調用 滾動的時候一直調用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    //kPrintDebug;
    //CGPoint point = scrollView.contentOffset;
    //NSLog(@"偏移量:%@",NSStringFromCGPoint(point));
}
//經常使用4
//將要結束拖拽的時候調用
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
    kPrintDebug;
}
//經常使用5
//已經結束拖拽調用
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    kPrintDebug;
}
//經常使用6
//將要開始 減速中止 的時候調用
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    kPrintDebug;
}
//經常使用7
//已經 減速中止的時候調用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    kPrintDebug;
}

//擴展
//將要開始 變形的時候調用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {
    kPrintDebug;
}
//變形過程當中一直調用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    kPrintDebug;
}
//變形結束的時候調用
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
    kPrintDebug;
}

//下面兩個協議方法 有效 必須 設置滾動視圖的_scrollView.scrollsToTop = YES;爲yes

//_scrollView.scrollsToTop = YES;
//上面設置以後 能夠經過 代理的協議的方法設置點擊狀態欄時候能夠滾動頂部

//經過代理設置 點擊狀態欄是否能夠滾動到頂部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView {
    kPrintDebug;
    return YES;
}
//點擊狀態欄已經滾動到頂部
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView {
    kPrintDebug;
}



- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end
相關文章
相關標籤/搜索