IOS第六天(1:scrollView 属性和查看大图)

***查看大图

#import "HMViewController.h"

@interface HMViewController () <UIScrollViewDelegate>

@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
@property (nonatomic, strong) UIImageView *imageView;

// 假设图像是从网络上获取的
@property (nonatomic, strong) UIImage *image;

@end

@implementation HMViewController
/**
 放大缩小

 1> 设置代理
 2> 指定最大/最小的缩放比例

 */

// 图像的setter
- (void)setImage:(UIImage *)image
{
    _image = image;

    // 设置图像视图的内容
    self.imageView.image = image;
    // 让图像视图根据图像自动调整大小
    [self.imageView sizeToFit];

    // 告诉scrollView内部内容的实际大小
    self.scrollView.contentSize = image.size;
}

/**
 在getter方法中

 * 如果是属性自身的,使用_成员变量
 * 如果是其他属性,使用self. getter方法,从而可以保证如果该对象没有被实例化,能够及时的被创建并加载
 */
- (UIImageView *)imageView
{
    if (_imageView == nil) {
        _imageView = [[UIImageView alloc] init];

        [self.scrollView addSubview:_imageView];
    }
    return _imageView;
}

- (UIScrollView *)scrollView
{
    if (_scrollView == nil) {
        _scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];

        // 设置属性
        // 设置边距
        _scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);

        // 不显示水平滚动标示
        _scrollView.showsHorizontalScrollIndicator = NO;
        // 不显示垂直滚动标示
        _scrollView.showsVerticalScrollIndicator = NO;

        // *** 偏移位置
        _scrollView.contentOffset = CGPointMake(0, 0);

        // 取消弹簧效果,内容固定,不希望出现弹簧效果时
        // 不要跟bounds属性搞混了
        _scrollView.bounces = NO;

        // 设置代理
        _scrollView.delegate = self;
        // 设置最大/最小缩放比例
        _scrollView.maximumZoomScale = 2.0;
        _scrollView.minimumZoomScale = 0.2;

        [self.view addSubview:_scrollView];
    }
    return _scrollView;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // 设置图像
    self.image = [UIImage imageNamed:@"minion"];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];
    btn.center = self.view.center;
    [self.view addSubview:btn];

    [btn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
}

- (void)click
{
    // 移动大图的偏移位置
    CGPoint offset = self.scrollView.contentOffset;
    offset.x += 20;
    offset.y += 20;

    // 注意:设置contentOffset会忽略contentSize
    self.scrollView.contentOffset = offset;
}

#pragma mark - UIScrollView的代理方法
/**
 1> 设置了代理
 2> 指定了最大、最小的缩放比例

 表示ScrollView是可以缩放的

 代理方法的"返回值"实际上就是控制器告诉滚动视图,要缩放的是UIImageView
 */
// 告诉ScrollView要缩放的视图是谁,具体的缩放实现,是由ScrollView来完成的
// 1> scrollView要知道缩放谁
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return self.imageView;
}

// 2> 滚动视图即将开始缩放,通常不需要写
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
{
    NSLog(@"%s", __func__);
}

// 3> 正在缩放,通常也不需要实现
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
    //    NSLog(@"%s", __func__);
    NSLog(@"%@", NSStringFromCGAffineTransform(self.imageView.transform));
}

// 4> 完成缩放,通常也不需要实现
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
    NSLog(@"%s", __func__);
}

@end
时间: 2024-11-15 21:48:30

IOS第六天(1:scrollView 属性和查看大图)的相关文章

[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

IOS第六天(3:scrollView 图片轮播器)

#import "HMViewController.h" #define kImageCount 5 @interface HMViewController () <UIScrollViewDelegate> @property (nonatomic, strong) UIScrollView *scrollView; @property (nonatomic, strong) UIPageControl *pageControl; @property (nonatomic

iOS 使用scrollView实现查看大图时 会出现滑不动的情况

最近几天在做查看大图的功能  但是居然出现scrollView滑不动的现象  很是郁闷啊 具体是这样的  使用SCrollerView 实现查看大图的功能 外层有一个大ScrollerView用于滑动切换图片, 内层有几张图片就有几个小Scroller 小ScrollerView用于缩放图片, 现在在滑动外层ScrollerView 时偶尔会出现滑不动的情况  呗这个问题卡了好几天   网上资源也甚是少啊!(大神们,有解决方案的能否共享一下呢???) 最后还是找到了一篇关于这个问题的文章. 究其

iOS点击查看大图的动画效果

对于图片来说,除了表情包,几乎都会被点击查看大图.今天就讲解一个查看和收起大图的动画效果,先直接看效果图: 如图所示,最开始是一个小图,点击小图可以查看大图.大图会从小图的位置和大小"弹"出来,同时背景变成半透明的阴影.点击大图或者阴影后,收起大图,同样地弹回到小图去,同时去掉阴影背景,就像是一张图片在伸大缩小一样. 现在看看这是怎么实现的.在思考一个动画的实现方法时,把动画的动作进行分解然后再一个个去思考怎么实现是一个好的习惯,我们稍微分解一下,这个动画在显示大图和收起大图的时候做了

微信JSSDK上传多图预览,点击查看大图

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no"> <meta name="ap

WKWebview点击图片查看大图

大家都知道,WKWebview是没有查看大图的属性或者方法的,所以只能通过js与之交互来实现这一功能,原理:通过js获取页面的图片,把它存放到数组,给图片添加点击事件,通过index显示大图就行了 其实很简单,给WKWebview写个类别,添加两个方法就行了,然后在WKWebview的两个协议中调用下这两个方法就行了 首先声明个数组来接收图片数组,可是有个问题,那就是类别是声明不了属性的,那怎么办呢?我们可以通过runtime来设置属性,runtime非常有用,我们以后的篇章会说到. stati

Pop–实现任意iOS对象的任意属性的动态变化

简介 Pop 是一个可扩展的动画引擎,可用于实现任意iOS对象的任意属性的动态变化,支持一般动画,弹性动画和渐变动画三种类型. 项目主页: pop 最新示例: 点击下载 注意: 官方代码中,并不包含实例,而是用于编译的所有源代码,建议自行新建工程,并结合下文的代码片段查看效果. 入门 安装 通过CocoaPods安装 pod 'pop', '~> 1.0' 使用 在需要使用POP的地方,引入头文件: #import <pop/POP.h> 动画的开始,停止 与 更新 把动画添加到你想要拥

android开发:点击缩略图查看大图

android中点击缩略图查看大图的方法一般有两种,一种是想新浪微博list页面那样,弹出一个窗口显示大图(原activity为背景).另一种就是直接打开一个新的activity显示大图. 1.第一种方法我们可以使用自定义的AlertDialog来实现,代码如下: ImageView image=(ImageView)findViewById(R.id.small_image); image.setOnClickListener(new OnClickListener() { // 点击放大 p

iOS数据存储之属性列表理解

iOS数据存储之属性列表理解 数据存储简介 数据存储,即数据持久化,是指以何种方式保存应用程序的数据. 我的理解是,开发了一款应用之后,应用在内存中运行时会产生很多数据,这些数据在程序运行时和程序一起驻留在内存中,一旦程序运行结束从内存中退出后,这些数据也就相应消失了.等到再次运行程序的时候,之前的那些数据又要重新计算.但是对于一些应用,我们需要将程序产生的数据持久的保存起来,使得应用重启之后这些数据不会丢失,这时候就需要用到数据的持久化技术. 在iOS设备上实现数据持久化存储的方式有很多中机制