ios開發學習-UIScrollView

1 、UIScrollView 的用法:

(1)將須要展現的內容添加到 UIScrollView 中
(2)設置 UIScrollView 的 contentSize 屬性,告訴 UIScrollView 全部內容的尺寸,也就是告訴它滾動的範圍(能滾多遠,滾到哪裏是盡頭)git

2 、UIScrollView 沒法滾動的解決辦法

若是 UIScrollView 沒法滾動,多是如下部分緣由:
(1)沒有設置滾動範圍 contentSizegithub

設置例如:self.scrollView.contentSize = self.myimageView.frame.size;
等價於:self.scrollView.contentSize = self.myimageView.image.size;

(2)scrollEnabled = NO
(3)沒有接收到觸摸事件:userInteractionEnabled = NO
(4)沒有取消 autolayout 功能(要想 scrollView 滾動,必須取消 autolayout)性能

3 、UIScrollView 的屬性:

• @property(nonatomic) CGPoint contentOffset;
 這個屬性用來表示 UIScrollView 滾動的位置atom

• @property(nonatomic) CGSize contentSize;
 這個屬性用來表示 UIScrollView 內容的尺寸,滾動範圍(能滾多遠)spa

• @property(nonatomic) UIEdgeInsets contentInset;
 這個屬性可以在 UIScrollView 的 4 周增長額外的滾動區域代理

• @property(nonatomic) BOOL bounces;
• 設置 UIScrollView 是否須要彈簧效果code

• @property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
 設置 UIScrollView 是否能滾動對象

• @property(nonatomic) BOOL showsHorizontalScrollIndicator;
 是否顯示水平滾動條事件

• @property(nonatomic) BOOL showsVerticalScrollIndicator;
 是否顯示垂直滾動條圖片

4 、 內容縮放

有些時候,咱們可能要對某些內容進行手勢縮放,以下圖所示:

clipboard.png

UIScrollView 不只能滾動顯示大量內容,還能對其內容進行縮放處理,也就是說,要完成縮放功能的話,只需
要將須要縮放的內容添加到 UIScrollView 中

UIScrollView 的縮放原理:
當用戶在 UIScrollView 身上使用捏合手勢時,UIScrollView 會給代理髮送一條消息,詢問代理究竟要縮放本身
內部的哪個子控件(哪一塊內容)

clipboard.png

當用戶在 UIScrollView 身上使用捏合手勢時,UIScrollView 會調用代理的 viewForZoomingInScrollView:方法,這個方法返回的控件就是須要進行縮放的控件

縮放實現步驟:

  1. 設置 UIScrollView 的 id<UISCrollViewDelegate> delegate 代理對象

  2. 設置 minimumZoomScale :縮小的最小比例

  3. 設置 maximumZoomScale :放大的最大比例

  4. 讓代理對象實現下面的方法,返回須要縮放的視圖控件

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

跟縮放相關的其餘代理方法:
 縮放完畢的時候調用
-(void)scrollViewDidZoom:(UIScrollView *)scrollView

 正在縮放的時候調用
-(void)scrollViewWillBeginZooming:(UIScrollView )scrollView withView:(UIView )view

五、UIScrollView案例代碼

一個簡單的示例,用UIScrollView展現圖片

//
//  ViewController.m
//  05-UIScrollView
//
//  Created by kaiyi wang on 16/8/31.
//  Copyright © 2016年 Corwien. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
// @property(weak, nonatomic)
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 建立UIScrollView
    UIScrollView *scrollView = [[UIScrollView alloc] init];
    
    // 可視範圍,能看的見的範圍是 400,460
    // 獲取屏幕的寬高
    CGFloat screenW = [UIScreen mainScreen].bounds.size.width;
    CGFloat screenH = [UIScreen mainScreen].bounds.size.height;
    scrollView.frame = CGRectMake(0, 0, screenW , screenH);
    scrollView.backgroundColor = [UIColor grayColor];
    [self.view addSubview:scrollView];
    
    
     // 拿到圖片的寬度和高度
    UIImageView *imageView = [[UIImageView alloc] init];
    imageView.image = [UIImage imageNamed:@"myImage.jpg"];
    CGFloat imgW = imageView.image.size.width;
    CGFloat imgH = imageView.image.size.height;
    
    // 設置控件位置大小
    imageView.frame = CGRectMake(0, 0, imgW, imgH);
    [scrollView addSubview:imageView];
    
     // 設置UIScrollView的滾動範圍(內容大小)
    scrollView.contentSize = imageView.image.size;
    
    // 隱藏滾動條
    scrollView.showsVerticalScrollIndicator = NO;
    scrollView.showsHorizontalScrollIndicator = YES;
    
    // 設置彈簧效果
    // scrollView.bounces = NO; // 去掉彈簧效果
    
    
    // 結構體類型    make快速建立                up left down right
   // scrollView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);

}
@end

clipboard.png

完整項目代碼,請看個人Github-Learning-iOS

相關文章
相關標籤/搜索