iOS_7_scrollView大图缩放

终于效果图:

BeyondViewController.h

//
//  BeyondViewController.h
//  7_scrollView大图展示
//
//  Created by beyond on 14-7-24.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface BeyondViewController : UIViewController
- (IBAction)upBtnClick:(id)sender;

@end

BeyondViewController.m

//
//  BeyondViewController.m
//  7_scrollView大图展示
//
//  Created by beyond on 14-7-24.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import "BeyondViewController.h"

@interface BeyondViewController ()<UIScrollViewDelegate>
{
    UIScrollView *_scrollView;

    // 要缩放的是内部的哪一个控件
    UIImageView *_imgView;
}

@end

@implementation BeyondViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // UIImageView
    // 1,类方法创建控件
    // UIImageView *imgView = [[UIImageView alloc]init];
    // 2,控件细节
//    NSString *imgName = [NSString stringWithFormat:@"HD.jpg"];
//    imgView.image = [UIImage imageNamed:imgName];
//    CGFloat imgW = imgView.image.size.width;
//    CGFloat imgH = imgView.image.size.height;
//    imgView.frame = CGRectMake(0, 0, imgW, imgH);

    // 或者高速创建,一句顶上面的6句代码
    _imgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"HD.jpg"]];

    // 1,实例化UIScrollView
    _scrollView = [[UIScrollView alloc]init];
    // 2,设置scrollView的可视大小,内容大小,等属性
    // _scrollView.frame = CGRectMake(0, 0, 320, 480);
    _scrollView.frame = self.view.bounds;
    _scrollView.contentSize = _imgView.image.size; // 这个最重要,是滚动区域
    _scrollView.showsHorizontalScrollIndicator = NO;
    _scrollView.showsVerticalScrollIndicator = NO;
    _scrollView.bouncesZoom = NO;
    _scrollView.bounces = YES;
    // scrollView.contentOffset是个点,x(左)和y(上),值是scrollView里面的大图片拖拽的位移,相对于scrollView的显示窗体的最左上角

    // 上左下右 逆时针 到边界之后,回不去了,多出来的距离
    // scrollView.contentInset = UIEdgeInsetsMake(5, 10, 20, 40);
    // 3,将imgeView加入到scrollView
    [_scrollView addSubview:_imgView];
    // 4,将scrollView加入到self.view
    // [self.view addSubview:_scrollView];
    // 小bug解决,界面上的button被全然遮挡了
    [self.view insertSubview:_scrollView atIndex:0];

    /*
      4.scrollView实现缩放(捏合手势)四步曲
            1,设置代理 为 当前控制器
            2,代理 尊守 协议 <UIScrollViewDelegate>
            3,代理 实现 协议中的方法 viewForZoomingInScrollView,告诉scrollView要缩放的是它内部的哪一个控件
            4,scrollView设置最大最小缩放比 就可以
     */
    _scrollView.delegate = self;
    _scrollView.minimumZoomScale = 0.3;
    _scrollView.maximumZoomScale = 2.0;

}

// 代理 实现 协议中的方法,告诉scrollView要缩放的是它内部的哪一个控件
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return _imgView;
}

- (IBAction)upBtnClick:(id)sender {
    // scrollView.contentOffset是个点,x(左)和y(上),值是scrollView里面的大图片拖拽的位移,相对于scrollView的显示窗体的最左上角
    [UIView animateWithDuration:0.3 animations:^{
        // 下面三步为OC标准代码,由于OC中不同意直接修该对象中结构体属性的成员的值,要通过中间的暂时结构体变量
        CGPoint offset = _scrollView.contentOffset;
        if (offset.y + 80 >= _scrollView.contentSize.height - _scrollView.frame.size.height) {
            return;
        }
        offset.y += 80;
        _scrollView.contentOffset = offset;
    }];

}
@end

scrollView的contentOffset

scrollView原理是通过拖拽其内部的大图片

时间: 2024-10-16 03:52:03

iOS_7_scrollView大图缩放的相关文章

PHP实例————图片等比例缩放功能

在网站开发的过程中,经常要对一些图片进行一些处理,比如说缩放,裁剪,加水印等等.当然这些功能不仅仅可以用在开发网站的过程中,平时需要对图片做一些处理的时候,把这个功能封装到函数中去,要处理图片的时候,根据自己的要求在函数中添加需要的参数不就搞定了么.虽说这个对于小白来说可能一下子上来就点困难,但是一回生二回熟嘛.好了,进入正题.今天分享一个图像等比例缩放的函数.需要中的同学可以稍作修改,然后自己拿去用,就省的自己写了(大神请无视). 1.首先,了解一下图片缩放中多需要的函数 有不太明白的可以用p

Android开发技巧——大图裁剪

本篇内容是接上篇<Android开发技巧--定制仿微信图片裁剪控件> 的,先简单介绍对上篇所封装的裁剪控件的使用,再详细说明如何使用它进行大图裁剪,包括对旋转图片的裁剪. 裁剪控件的简单使用 XML代码 使用如普通控件一样,首先在布局文件里包含该控件: <com.githang.clipimage.ClipImageView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+i

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

PHP第十课 PHP图像处理函数以及验证码实现

如果你喜欢本博客,请访问本博客地址:http://blog.csdn.net/junzaivip 概要: gd库画图: 数学函数 PHP图片处理函数 图片处理函数使用场景 1.验证码 2.缩放 3.裁剪 4.水印 gd库画图: 1.准备画布 2.准备涂料 3.画画 4.输出图片 5.保存图片 6.关闭画布 <?php //准备画布 $im = imagecreatetruecolor(500, 300); //准备涂料 $black = imagecolorallocate($im, 0, 0,

PHP常用封装类

1.mysql.class.php <?php // namespace Package; /** * MySQL 类 * @author cxm <[email protected]> * */ class MySQL { private static $link = null; //数据库连接 /** * 私有的构造方法 */ private function __construct() {} /** * 连接数据库 * @return obj 资源对象 */ private sta

HTML5 本地裁剪图片并上传至服务器(转)

很多情况下用户上传的图片都需要经过裁剪,比如头像啊什么的.但以前实现这类需求都很复杂,往往需要先把图片上传到服务器,然后返回给用户,让用户确定裁剪坐标,发送给服务器,服务器裁剪完再返回给用户,来回需要 5 步.步骤繁琐不说,当很多用户上传图片的时候也很影响服务器性能. HTML5 的出现让我们可以更方便的实现这一需求.虽然这里所说的技术都貌似有点过时了(前端界的“过时”,你懂的),但还是有些许参考价值.在这里我只说一下要点,具体实现同学们慢慢研究. 下面奉上我自己写的一个demo,在输入框中选好

LruCache类的相关知识以及代码实现

一.LruCache的简单介绍 Cache保存一个强引用来限制内容数量,每当Item被访问的时候,此Item就会移动到队列的头部. * 当cache已满的时候加入新的item时,在队列尾部的item会被回收. * 如果你cache的某个值需要明确释放,重写entryRemoved() * 如果key相对应的item丢掉啦,重写create().这简化了调用代码,即使丢失了也总会返回. * is limited to 4MiB of bitmaps: 默认cache大小是测量的item的数量,重写

Android瀑布流,解决oom

这是一个Android瀑布流的实现demo. 瀑布流我的实现是定义三个linearlayout,然后向里面addView(),如果多了会出现oom异常,所以做了一些处理. 1.lrucache缓存 2.只显示当前屏的图片 3.滑动过程中不加载图片 4.大图缩放成小图 直接看代码: PhotoFallScrollView.java主类 自定义的ScrollView. package com.pangzaifei.falls; import java.io.BufferedInputStream;

[iOS基础控件 - 5.2] 查看大图、缩放图片代码(UIScrollView制作)

原图: 900 x 1305   拖曳滚动: 缩放:       主要代码: 1 // 2 // ViewController.m 3 // ImageZoom 4 // 5 // Created by hellovoidworld on 14/11/28. 6 // Copyright (c) 2014年 hellovoidworld. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface