UIScrollView屬性及其代理方法

一、UIScrollView是什么乓旗?

1、UIScrollView是滾動(dòng)的view集索,UIView本身不能滾動(dòng)屿愚,子類(lèi)UIScrollview拓展了滾動(dòng)方面的功能。
2务荆、UIScrollView是所有滾動(dòng)視圖的基類(lèi)妆距。以后的UITableView,UITextView等視圖都是繼承于該類(lèi)函匕。
使用場(chǎng)景:顯示不下(單張大圖)娱据;內(nèi)容太多(圖文混排);滾動(dòng)頭條(圖片)盅惜;相冊(cè)等

二中剩、UIScrollView使用

1、UIScrollview主要專(zhuān)長(zhǎng)于兩個(gè)方面:
      a酷窥、滾動(dòng):contentSize大于frame.size的時(shí)候咽安,能夠滾動(dòng)。
      b蓬推、 縮放:自帶縮放妆棒,可以指定縮放倍數(shù)。
2、UIScrollView滾動(dòng)相關(guān)屬性contentSize
 //定義內(nèi)容區(qū)域大小糕珊,決定是否能夠滑動(dòng)
contentOffset    //視圖左上角距離坐標(biāo)原點(diǎn)的偏移量
scrollsToTop      //滑動(dòng)到頂部(點(diǎn)狀態(tài)條的時(shí)候)
pagingEnabled   //是否整屏翻動(dòng)
bounces           //邊界是否回彈
scrollEnabled     //是否能夠滾動(dòng)
showsHorizontalScrollIndicator //控制是否顯示水平方向的滾動(dòng)條
showVerticalScrollIndicator       //控制是否顯示垂直方向的滾動(dòng)條
alwaysBounceVertical           //控制垂直方向遇到邊框是否反彈
alwaysBounceHorizontal       //控制水平方向遇到邊框是否反彈
3动分、UIScrollView縮放相關(guān)屬性
minimumZoomScale  //  縮小的最小比例
maximumZoomScale   //放大的最大比例
zoomScale                  //設(shè)置變化比例
zooming                      //判斷是否正在進(jìn)行縮放反彈
bouncesZoom             //控制縮放的時(shí)候是否會(huì)反彈
要實(shí)現(xiàn)縮放,還需要實(shí)現(xiàn)delegate红选,指定縮放的視圖是誰(shuí)澜公。
4.UIScrollView滾動(dòng)實(shí)例應(yīng)用
- (void)scrollView{
    // 創(chuàng)建滾動(dòng)視圖,但我們現(xiàn)實(shí)的屏幕超過(guò)一屏?xí)r,就需要滾動(dòng)視圖
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];
    scrollView.backgroundColor = [UIColor yellowColor];
    scrollView.tag = 1000;
    // 設(shè)置滾動(dòng)區(qū)域
    scrollView.contentSize = CGSizeMake(4 * CGRectGetWidth(self.view.frame), self.view.frame.size.height);
    [self.view addSubview:scrollView];
    // 添加子視圖
    for (int i = 0; i < 4; i ++) {
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.view.frame) * i, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame))];
        label.text = [NSString stringWithFormat:@"這是%d個(gè)視圖",i];
        label.font = [UIFont systemFontOfSize:30];
        [scrollView addSubview:label];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",i]]]; // (有四張片分別取名0.jpg,1.jpg,2.jpg.3.jpg)
        [imageView setFrame:self.view.frame];
        [label addSubview:imageView];

//        label.backgroundColor = [UIColor colorWithRed:arc4random()%256/255.0 green:
//            arc4random()%256/255.0  blue:arc4random()%256/255.0  alpha:1];
        
    }
    // 設(shè)置分頁(yè)效果 (默認(rèn)值為NO)
    scrollView.pagingEnabled = YES;
    // 設(shè)置滾動(dòng)條是否顯示(默認(rèn)值是YES)
    scrollView.showsHorizontalScrollIndicator = YES;
    // 設(shè)置邊界是否有反彈效果(默認(rèn)值是YES)
    scrollView.bounces = YES;
    // 設(shè)置滾動(dòng)條的樣式
    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
    /*
indicatorStyle(枚舉值)  
   UIScrollViewIndicatorStyleDefault,     //白色
   UIScrollViewIndicatorStyleBlack,       //  黑色
     */
    
    // 設(shè)置scrollView的代理
    scrollView.delegate = self; // (記得導(dǎo)入?yún)f(xié)議代理 <UIScrollViewAccessibilityDelegate>)
}

5喇肋、UIScrollView滾動(dòng)代理方法
// 滾動(dòng)就會(huì)觸發(fā)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{    NSLog(@"只有scrollview是跟滾動(dòng)狀態(tài)就會(huì)調(diào)用此方法");
}
//開(kāi)始拖拽時(shí)觸發(fā)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    NSLog(@"開(kāi)始拖拽");
    
}
// 結(jié)束拖拽時(shí)觸發(fā)
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView  willDecelerate:(BOOL)decelerate{
        NSLog(@"結(jié)束拖拽");
}
// 開(kāi)始減速時(shí)觸發(fā)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
        NSLog(@"開(kāi)始減速");
    
}
// 結(jié)束減速時(shí)觸發(fā)(停止)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
        NSLog(@"結(jié)束減速(停止)");
}
6坟乾、UIScrollView縮放實(shí)例應(yīng)用
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor orangeColor];
    // 初始化一個(gè)scrollView
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];
    scrollView.backgroundColor = [UIColor greenColor];
    scrollView.delegate = self;


    // 設(shè)置縮放比率
    // 設(shè)置可縮小道德最小比例
    scrollView.minimumZoomScale = 0.5;
    // 設(shè)置可放大的最大比例
    scrollView.maximumZoomScale = 2.0;
 [self.view addSubview:scrollView];

    // 使得要添加的圖片寬高成比例
    UIImage *myImage = [UIImage imageNamed:@"7.jpg"];
    // 得到原始寬高
    float imageWidth = myImage.size.width;
    float imageHeight = myImage.size.height;
    // 這里我們規(guī)定imageView的寬為200,根據(jù)此寬度得到等比例的高度
    float imageViewWidth = 200;
    float imageViewHeight = 200 *imageHeight/imageWidth;
    // 初始化一個(gè)UIimageview
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, imageViewWidth, imageViewHeight)];
    // 為imageView設(shè)置圖片
    imageView.image = myImage;
    // 讓imageView居中
    imageView.center = self.view.center;
    imageView.tag = 1000;
    [scrollView addSubview:imageView];
    
}

7蝶防、UIScrollView縮放有關(guān)的代理
#pragma mark -- 滾動(dòng)視圖與縮放有關(guān)的代理方法
//指定scrollview的某一個(gè)子視圖為可縮放視圖甚侣,前提條件是次視圖已經(jīng)添加到scrollview上面
-(UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    UIView *imageView = (UIView*)[scrollView viewWithTag:1000];
    return imageView;
}

// 開(kāi)始縮放的代理方法  第二個(gè)參數(shù)view:這個(gè)參數(shù)使我們將要縮放的視圖(這里就是imageView)
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
    NSLog(@"%@",view);
    
}

// 正在縮放的代理方法  只要在縮放就執(zhí)行該方法,所以此方法會(huì)在縮放過(guò)程中多次調(diào)用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
    // 在縮放過(guò)程中為了使得該視圖一直在屏幕中間间学,所以我們需要在他縮放的過(guò)程中一直調(diào)整他的center
    // 得到scrollview的子視圖
    UIImageView *imageView = (UIImageView *)[scrollView viewWithTag:1000];
    // 打印imageView的frame殷费,分析為什么他的位置會(huì)改變
  //  NSLog(@"frame -- %@",NSStringFromCGRect(imageView.frame));
    
    // 設(shè)置imageview的center,是他的位置一直在屏幕中央
    imageView.center = scrollView.center;
    // 打印contentSize  分析為什么縮放之后會(huì)滑動(dòng)
    NSLog(@"contentSize %@",NSStringFromCGSize(scrollView.contentSize));
}


// 縮放結(jié)束所執(zhí)行的代理方法
/**
 *  @ view    當(dāng)前正在縮放的視圖
 *  @ scale  當(dāng)前正在縮放視圖的縮放比例
 */
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
    // 縮放完成之后恢復(fù)原大小低葫,這里運(yùn)用到2D仿射變換函數(shù)中與捏合有關(guān)的函數(shù)
    view.transform =CGAffineTransformMakeScale(1, 1);
       
    
}
8详羡、成品 (可以左右滑動(dòng)切換圖片)
這是第0個(gè)視圖.png
這是第2個(gè)視圖.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嘿悬,隨后出現(xiàn)的幾起案子实柠,更是在濱河造成了極大的恐慌,老刑警劉巖鹊漠,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件主到,死亡現(xiàn)場(chǎng)離奇詭異茶行,居然都是意外死亡躯概,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)畔师,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)娶靡,“玉大人,你說(shuō)我怎么就攤上這事看锉∽硕В” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵伯铣,是天一觀的道長(zhǎng)呻此。 經(jīng)常有香客問(wèn)我,道長(zhǎng)腔寡,這世上最難降的妖魔是什么焚鲜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上忿磅,老公的妹妹穿的比我還像新娘糯彬。我一直安慰自己,他們只是感情好葱她,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布撩扒。 她就那樣靜靜地躺著,像睡著了一般吨些。 火紅的嫁衣襯著肌膚如雪搓谆。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天豪墅,我揣著相機(jī)與錄音挽拔,去河邊找鬼。 笑死但校,一個(gè)胖子當(dāng)著我的面吹牛螃诅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播状囱,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼术裸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了亭枷?” 一聲冷哼從身側(cè)響起袭艺,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叨粘,沒(méi)想到半個(gè)月后猾编,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡升敲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年答倡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驴党。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瘪撇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出港庄,到底是詐尸還是另有隱情倔既,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布鹏氧,位于F島的核電站渤涌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏把还。R本人自食惡果不足惜实蓬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一稿存、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瞳秽,春花似錦瓣履、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至腺晾,卻和暖如春燕锥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悯蝉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工归形, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鼻由。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓暇榴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蕉世。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蔼紧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容