iOS开发-ScrollView图片缩放

智能手机一般常用常用的操作触摸,滑动,缩放,感觉对于生活而言就是手机在手,天下我有,看网页的时候字体太小,缩放一下,看美女的看的不爽,缩放一下,地图看的不清,缩放一下。缩放是一个很常见的操作,不论是从生活还是写程序而言,都是一个绕不开的东西,做了一个Demo,缩放一下美女,熟悉ScrollView中的常见属性的设置,开始正题吧。

常见属性

先看图,要实现的效果:

  

    UIImage *image=[UIImage imageNamed:@"girl0.jpg"];

    _imageView=[[UIImageView alloc] initWithImage:image];

    [_scrollView addSubview:_imageView];
    //设置ScrollView和image是一样的大小
    [_scrollView setContentSize:image.size];

 可以设置ScrollView的初始位置和大小:

    //CGRect枚举一个矩形,然后设置imageView的位置
    [_imageView setFrame:CGRectMake(0, 0, 100, 100)];

设置边界区域:

    //设置边界区域
   [_scrollView setContentInset:UIEdgeInsetsMake(20, 20.0, 20.0, 20.0)];

 上下左右移动调用哪个同意IBAction,通过Tag区分(之前文章有介绍),移动就是控制坐标,IOS中左上角是0,X轴向右自增,Y轴向下自增:

    UIButton *button=(UIButton *)sender;
    CGPoint currentPoint=self.scrollView.contentOffset;
    switch (button.tag) {
        case 0:
            currentPoint.y-=50;
            break;
        case 1:
            currentPoint.y+=50;
            break;
        case 2:
            currentPoint.x-=50;
            break;
        case 3:
            currentPoint.x+=50;
            break;
        default:
            break;
    }
    //横轴的边界值
    if (currentPoint.x<0) {
        currentPoint.x=0;
    }else if (currentPoint.x>_scrollView.contentSize.width-_scrollView.bounds.size.width){
        currentPoint.x=_scrollView.contentSize.width-_scrollView.bounds.size.width;
    }

    //纵轴的边界值
    if (currentPoint.y<0) {
        currentPoint.y=0;
    }else if (currentPoint.y>_scrollView.contentSize.height-_scrollView.bounds.size.height){
        currentPoint.y=_scrollView.contentSize.height-_scrollView.bounds.size.height;
    }

    //动画效果
    [self.scrollView setContentOffset:currentPoint animated:YES];

 动画效果可以通过block设置:

    [UIView animateWithDuration:0.3f animations:
    ^{
         [self.scrollView setContentOffset:currentPoint];
    }];

缩放

缩放之前需要涉及到一个东西就是控制器需要遵守UIScrollViewDelegate协议,然后实现协议中方法,应用场景中如果我们在对ScrollView中图片进行缩放,将消息通知给UIScrollViewDelegate,最终将事件实现委托给是实现方法:

//
//  ViewController.h
//  ScrollView
//  http://www.cnblogs.com/xiaofeixiang
//  Created by keso on 15/1/20.
//  Copyright (c) 2015年 keso. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIScrollViewDelegate>

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

@end

设置一下最大和最小缩放比例,设置委托:

    [_scrollView setMinimumZoomScale:0.3];
    [_scrollView setMaximumZoomScale:1.8];
    [_scrollView setDelegate:self];

实现一个返回的图像,如果不是实现,没有效果:

//缩放过程中的图像
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    return _imageView;
}

有的时候如果可能有业务需要会需要一个缩放结束的方法:

////缩放结束
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
    NSLog(@"缩放比例:%f",scale);
}

还有一个不常用的,缩放中的方法:

//缩放中
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
    NSLog(@"缩放中的调用~");
}

 最终效果:

时间: 2024-10-29 19:10:36

iOS开发-ScrollView图片缩放的相关文章

iOS开发基础-图片切换(2)

延续:iOS开发基础-图片切换(1),对(1)里面的代码进行改善. 在 ViewController 类中添加新的数组属性:  @property (nonatomic, strong) NSArray *infoArray; //存放图片信息 通过 self.infoArray 的 getter 方法对其实现初始化(懒加载),其中代码中的 _infoArray 不能用 self.infoArray 替换: 1 //infoArray的get方法 2 - (NSArray *)infoArray

iOS开发基础-图片切换(3)

延续:iOS开发基础-图片切换(2),对(2)里面的代码用属性列表plist进行改善. 新建 Property List 命名为 Data 获得一个后缀为 .plist 的文件. 按如图修改刚创建的文件: 最后,修改 infoArray 的 getter 方法: 1 //infoArray的getter方法 2 - (NSArray *)infoArray { 3 NSLog(@"需要获取图片信息数组"); 4 //只实例化一次 5 if (_infoArray == nil) { 6

iOS开发中图片方向的获取与更改

iOS开发中 再用到照片的时候  或多或少遇到过这样的问题  就是我想用的照片有横着拍的有竖着排的  所以导致我选取图片后的效果也横七竖八的   显示效果不好 比如: 图中红圈选中的图片选取的是横着拍的图片 所以显示的头像也是横着的 显示效果不佳 问题描述: 使用过iPhone或者iPad的朋友在拍照时不知是否遇到过这样的问题,将设备中的照片导出到Windows上时,经常发现导出的照片方向会有问题,要么横着,要么颠倒着,需要旋转才适合观看.而如果直接在这些设备上浏览时,照片会始终显示正确的方向,

IOS开发防止图片渲染的方法

IOS开发中,很多时候我们在给导航控制器或者其它的控制器中的部件添加图片的时候,图片会被渲染,下面就是处理图片渲染的方法. UIImage *image = [UIImage imageNamed:@"a.jpg"]; image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

Android安卓开发中图片缩放讲解

安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们取图片的缩略图,取缩略图的方法我们可以使用 BitmapFactory的decodeFile方法,然后通过传递进去 BitmapFactory.Option类型的参数进行取缩略图,在Option中,属性值inSampleSize表示缩略图大小为原始图片大小的几 分之一,即如果这个值为2,则取出的缩略

iOS开发探索-图片压缩处理

介绍: 压: 指文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降.缩: 指文件的尺寸变小,也就是像素数减少,而长宽尺寸变小,文件体积同样会减小. 应用: 在实际开发中,我们经常会对图片进行处理,满足开发需求,以下介绍三种图片压缩处理: 1.压缩图片质量(图片体积减小,像素不变) 两种读取图片数据的简单方法:(1).UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数,压缩体积不是随压缩系数比例变化的.(2).UIImagePNGRepresenta

iOS &amp; Objective-C UIScrollView 图片缩放+居中

(面前横着图形学实验的deadline 我居然搞这个.. 在将图片居中的地方坑了好久,从 NSLog 输出的内容可以看出使用 ScrollView 大概的函数调用流程 略 最后是在 (void)scrollViewDidZoom:(UIScrollView *)scrollView 函数中更新 imageView.frame.origin,就是image在scrollView里的偏移. 下面这条要靠前写,不然设置zoomScale就不会生效 self.scrollView.delegate =

iOS开发-简单图片背景替换(实现抠图效果)

之前好奇, 想实现这样的功能   -----> iOS图像处理-(jpg去除白色背景) 把一张图片(.jpg)的白色背景抠掉,转成.png 格式的有alpha通道的透明图. 原图黑白分明, 像这样转换成这样 然后在论坛,得到了想要的答案.这里先谢过那位大牛, 也提供了参考资料:iOS8 Core Image In Swift:更复杂的滤镜 然后今天, 自己也总结一下. 写了个小小的demo, 实现背景图片的切换. 效果如下: 可以看到, 原先的黄色渐变背景被替换掉了.  接下去就是要实现这样一个

iOS开发_图片涂鸦

主控制器的关键代码: 一  ViewController.m #import "ViewController.h" #import "ZRPaintView.h" #import "UIImage+ZR.h" @interface ViewController () - (IBAction)clear; - (IBAction)back; - (IBAction)save; @property (weak, nonatomic) IBOutlet