zoukankan      html  css  js  c++  java
  • [ios]scrollView实现移动与缩放

    实现滑动

    1.在viewDidLoad中对scrollview的contentSize属性赋值 告诉他滑动范围。

    实现缩放

    1.在storyboard的scrollview的attribute标签中设置zoom的范围。

    2.实现一个UIScrollViewDelegate[scrollview的委托],并将其在viewDidLoad中传给scrollview

    3.实现UIScrollViewDelegate 需要复写- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

    这个方法返回需要zoom的view。

    注意:如果使用缩放  且缩放的view大于屏幕

    则必须要设置所需要缩放的view的fram 否则 zoom过程中会将view的frame改变 从而改变到了 image的size 导致scrollView 的contentSize 改变 影响滑动效果。 

    所以每次使用zoom的时候 需要变化的view需要设置它的frame.szie与它的内容大小绑定[如imageView 的image.size]

    简要代码:

    Oc代码 复制代码 收藏代码
    1. //  
    2. //  ISViewController.m  
    3. //  ImageInScrollView  
    4. //  
    5. //  Created by liu poolo on 12-10-12.  
    6. //  Copyright (c) 2012年 liu poolo. All rights reserved.  
    7. //  
    8.   
    9. #import "ISViewController.h"  
    10.   
    11. @interface ISViewController ()<UIScrollViewDelegate>  
    12.   
    13. @end  
    14.   
    15. @implementation ISViewController  
    16. @synthesize scrollView=_scrollView;  
    17. @synthesize imageView=_imageView;  
    18. - (void)viewDidLoad  
    19. {  
    20.     [super viewDidLoad];  
    21.       
    22.     //设置UIScrollViewDelegate  
    23.     self.scrollView.delegate=self;  
    24.       
    25.       
    26.     self.scrollView.contentSize=self.imageView.image.size;  
    27.     self.imageView.frame=CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);  
    28.     
    29.   
    30.   
    31.   
    32.   
    33.   
    34.   
    35.   
    36.   
    37.   
    38.   
    39.  self.imageView.frame=CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);  
    40.   
    41.     //如果不加这句的话  
    42.   
    43.     //那么正常拖动是可以的,但是如果zoom了 就会有问题  
    44.   
    45.     //zoom发生后会把frame变成当前显示大小[imageview默认大小 屏幕显示大小 如是全屏则就是全屏大小] zoom变化导致frame同步改变了image的size 大小为frame大小  
    46.   
    47.     //image 的size改变后导致self.scrollView.contentSize 变成了frame的大小  从而contentSize变小了 无法实现正常拖动。  
    48.   
    49.     //然后根据zoom缩放比例变化。而不是根据实际图片大小。这么导致zoom后就无法拖动了[因为frame大小]  
    50.   
    51.   
    52.   
    53.   
    54.       
    55.   
    56.   
    57. }  
    58.   
    59. - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView  
    60.     //返回需要zoom的view  
    61. {  
    62.     //如果想要scrollview 实现缩放 则需要给scrollview.delegate 对一个UIScrollViewDelegate 对象  
    63.     //且 此对象需要覆写viewForZoomingInScrollView 方法。  
    64.     //总结:只有 scrollview的delegate复写了viewForZoomingInScrollView scrollview才会缩放。  
    65.     return self.imageView;  
    66.       
    67. }  
    68.   
    69. - (void)didReceiveMemoryWarning  
    70. {  
    71.     [super didReceiveMemoryWarning];  
    72.     self.scrollView=nil;  
    73.     self.imageView=nil;  
    74. }  
    75.   
    76. @end  
  • 相关阅读:
    重写Override和重加载Overload
    Java 继承
    poj 3263 Tallest Cow
    矩阵求和
    全排列
    最大乘积
    三角形面积
    Sum
    搭积木
    调手表
  • 原文地址:https://www.cnblogs.com/lovewx/p/4120811.html
Copyright © 2011-2022 走看看