企业信息

    北京沃赢科技有限公司

  • 11
  • 公司认证: 营业执照已认证
  • 企业性质:
    成立时间:
  • 公司地址: 北京市 海淀区 海淀街道 北京市海淀区银海大厦
  • 姓名: 刘老师
  • 认证: 手机未认证 身份证未认证 微信未绑定

    IOS UIScrollView详解 & 图片缩放功能

  • 所属行业:商务服务 教育培训 管理培训
  • 发布日期:2015-07-27
  • 阅读量:167
  • 价格:面议
  • 产品规格:不限
  • 产品数量:10000.00 件
  • 包装说明:不限
  • 发货地址:北京海淀海淀  
  • 关键词:我赢职场,在线教育

    IOS UIScrollView详解 & 图片缩放功能详细内容

    IOS UIScrollView详解 & 图片缩放功能
    
    一 UIScrollView 简介
    UIScrollView是能滚动的视图控件,可以通过滚动的方式来展示类容。
    
    二 UIScrollView常见属性
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20	//设置UIScrollView滚动的位置
    @property(nonatomic)?CGPoint?contentOffset;?
    ?
    //设置UIScrollView内容的尺寸,滚动范围
    @property(nonatomic)?CGSize?contentSize;?
    ?
    //设置UIScrollView的4周增加额外的滚动区域
    @property(nonatomic)?UIEdgeInsets?contentInset;?
    ?
    //设置UIScrollView是否需要弹簧效果
    @property(nonatomic)?BOOL?bounces;
    ?
    //设置UIScrollView是否能滚动
    @property(nonatomic,getter=isScrollEnabled)?BOOL?scrollEnabled;?
    ?
    //设置UIScrollView是否显示水平滚动条
    @property(nonatomic)?BOOL?showsHorizontalScrollIndicator;
    ?
    //设置UIScrollView是否显示垂直滚动条
    @property(nonatomic)?BOOL?showsVerticalScrollIndicator;
    
    三 UIScrollView 代理(delegate)
    UIScrollView在滚动过程中 或者 停止滚动 时,如果需要做一些特定的操作,可用通过设置代理的方式(delegate)来监听UIScrollView的整个滚动过程,当UIScrollView发生一系列的滚动操作时, 会自动通知它的代理(delegate)对象,然后通过代理来监听UIScrollView的滚动过程。
    UIScrollView将delegate需要实现的方法都定义在UIScrollViewDelegate协议中,因此UIScrollView的delegate必须遵守UIScrollViewDelegate协议,然后实现协议中相应的方法,就可以监听UIScrollView的滚动过程
    ?
    1
    2
    3
    4
    5
    6
    7
    8	//?用户开始拖拽时调用
    -?(void)scrollViewWillBeginDragging:(UIScrollView?*)scrollView;
    ?
    //?滚动到某个位置时调用
    -?(void)scrollViewDidScroll:(UIScrollView?*)scrollView;
    ?
    //?用户结束拖拽时调用
    -?(void)scrollViewDidEndDragging:(UIScrollView?*)scrollView?willDecelerate:(BOOL)decelerate;
    
    四 内容缩放
    UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理
    当在UIScrollView身上使用捏合手势时,UIScrollView会调用代理(delegate)的viewForZoomingInScrollView方法,这个方法返回的控件就是需要进行缩放的控件,缩放涉及的属性和方法
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18	/****属性****/
    //缩小的对小比例
    @property(nonatomic)?CGFloat?minimumZoomScale;
    ?
    //放大的较大比例
    @property(nonatomic)?CGFloat?maximumZoomScale;????
    ?
    ?
    ?
    /****方法****/
    //缩放时调用
    -?(UIView?*)viewForZoomingInScrollView:(UIScrollView?*)scrollView;
    ?
    //开始缩放的时候调用?
    -?(void)scrollViewWillBeginZooming:(UIScrollView?*)scrollView?withView:(UIView?*)view
    ?
    //正在缩放的时候调用
    -?(void)scrollViewDidZoom:(UIScrollView?*)scrollView
    
    五 UIScrollView无法滚动的解决办法
    如果UIScrollView无法滚动,可能是以下原因:
    5.1 没有设置contentSize属性
    5.2 设置属性scrollEnabled = NO
    5.3 没有接收到触摸事件(userInteractionEnabled = NO)
    5.4 取消autolayout功能,要想scrollView滚动,必须取消autolayout
    
    六 代码区
    6.1 代码
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155	#import?"ViewController.h"
    ?
    @interface?ViewController?()
    /**
    ?*UIScrollView
    ?*/
    @property(nonatomic,strong)UIScrollView?*scrollView;
    ?
    /**
    ?*??UIImageView
    ?*/
    @property(nonatomic,strong)UIImageView?*imageView;
    @end
    ?
    @implementation?ViewController
    -?(void)viewDidLoad?{
    ?????
    ????//2.设置?UIImageView
    ?
    ????UIImage?*image?=?[UIImage?imageNamed:@"scroll.jpg"];
    ????self.imageView.image?=?image;
    ?????
    ????//2.1?设置图片范围
    ????CGFloat?imageH?=?image.size.height;
    ????CGFloat?imageW?=?image.size.width;
    ????CGFloat?imageX?=?0;
    ????CGFloat?imageY?=?0;
    ????self.imageView.frame?=?CGRectMake(imageX,?imageY,?imageW,?imageH);
    ?????
    ?????
    ?
    ????//3?设置UIScrollView?属性
    ?????
    ????//3.2?设置UIScrollView内容的尺寸,滚动范围
    ????self.scrollView.contentSize=CGSizeMake(imageW,?imageH);
    ?????
    ????//3.2?设置UIScrollView的4周增加额外的滚动区域
    ????CGFloat?distance?=?100.0f;
    ????self.scrollView.contentInset?=?UIEdgeInsetsMake(distance,?distance,?distance,?distance);
    ?????
    ????//3.3?设置弹簧效果
    ????self.scrollView.bounces?=?YES;
    ?????
    ????//3.4?设置滚动不显示
    ????self.scrollView.showsHorizontalScrollIndicator=NO;
    ????self.scrollView.showsVerticalScrollIndicator=NO;
    ?????
    ?????
    ?????
    ?????
    ????//4?UIImageView?添加到?UIScrollView?中
    ????[self.scrollView?addSubview:self.imageView];
    ?????
    ????//5?UIScrollView
    ????[self.view?addSubview:self.scrollView];
    ?????
    ?????
    ????//6?设置代理
    ????self.scrollView.delegate?=?self;
    ?????
    ?????
    ????//7?缩放
    ????self.scrollView.minimumZoomScale=0.2f;
    ????self.scrollView.maximumZoomScale=2.0f;
    ?????
    }
    ?
    #pragma?mark?代理方法
    //?用户开始拖拽时调用
    -?(void)scrollViewWillBeginDragging:(UIScrollView?*)scrollView
    {
    ????NSLog(@"开始拖拽");
    }
    ?
    //?滚动到某个位置时调用
    -?(void)scrollViewDidScroll:(UIScrollView?*)scrollView
    {
    ????NSLog(@"拖拽中");
    }
    ?
    //?用户结束拖拽时调用
    -?(void)scrollViewDidEndDragging:(UIScrollView?*)scrollView?willDecelerate:(BOOL)decelerate
    {
    ????NSLog(@"结束拖拽");
    }
    ?
    ?
    ?
    ?
    #pragma?mark?缩放
    /**
    ?*??缩放结束时调用
    ?*
    ?*??@param?scrollView?
    ?*
    ?*??@return?
    ?*/
    -?(UIView?*)viewForZoomingInScrollView:(UIScrollView?*)scrollView
    {
    ????NSLog(@"开始缩放");
    ????return?self.imageView;
    }
    ?
    ?
    /**
    ?*??缩放过程中调用
    ?*
    ?*??@param?scrollView?
    ?*/
    -?(void)scrollViewDidZoom:(UIScrollView?*)scrollView
    {
    ????NSLog(@"正在缩放");
    }
    ?
    ?
    ?
    /**
    ?*??缩放结束时调用
    ?*
    ?*??@param?scrollView?
    ?*??@param?view???????
    ?*??@param?scale??????
    ?*/
    -?(void)scrollViewDidEndZooming:(UIScrollView?*)scrollView?withView:(UIView?*)view?atScale:(CGFloat)scale
    {
    ????NSLog(@"缩放结束");
    }
    ?
    ?
    ?
    ?
    ?
    #pragma?mark?属性get方法
    ?
    -?(UIScrollView?*)scrollView
    {
    ????if?(!_scrollView)?{
    ????????_scrollView?=?[[UIScrollView?alloc]?initWithFrame:self.view.frame];
    ????}
    ????return?_scrollView;
    }
    ?
    ?
    ?
    -?(UIImageView?*)imageView
    {
    ????if?(!_imageView)?{
    ????????_imageView?=?[[UIImageView?alloc]?init];
    ????}
    ????return?_imageView;
    }
    ?
    ?
    ?
    @end
    
    6.2 展示
    缩放前 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?缩放后
    ?? ? ? ??
    学习链接/ios/?tg=5009295340
    学习交流群:317140762
    
    

    http://jiexiaotan.cn.b2b168.com
    欢迎来到北京沃赢科技有限公司网站, 具体地址是北京市海淀区海淀街道北京市海淀区银海大厦,联系人是刘老师。 主要经营iOS开发、互联网架构师、安卓、Oracle、SAP、RedHat等。 单位注册资金未知。 我们公司主要服务有:教育教学软件等,我们愿以优质的服务和诚意、为您提供精良的产品和专业枝术,共创美好未来!