文档章节

iOS开发之UIScrollView代理

shenhuniurou
 shenhuniurou
发布于 2016/03/05 00:43
字数 498
阅读 54
收藏 3

    想在UIScrollView正在滚动滚动到某个位置又或者停止滚动时做一些特定的操作,那么就需要监听UIScrollView的整个滚动过程,当UIScrollView发生一系列的滚动操作时,会自动通知它的代理(delegate)对象,给它的代理发送相应的消息,让代理得知它的滚动情况。也就是说,要想监听UIScrollView的滚动过程,就必须先给UIScrollView设置一个代理对象,然后通过代理得知UIScrollView的滚动过程。

看UIScrollView的代码,会发现她有一个属性delagate

UIScrollView将delegate需要实现的方法都定义在了UIScrollViewDelegate协议中,因此要想成为UIScrollView的delegate(可以是任意类型的对象),必须遵守UIScrollViewDelegate协议,然后实现协议中相应的方法,就可以监听UIScrollView的滚动过程了。

#import "ViewController.h"

//在类扩展中遵守协议
@interface ViewController () <UIScrollViewDelegate>

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

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
        
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"xx"]];
    [self.scrollview addSubview:imageView];
    self.scrollview.backgroundColor = [UIColor redColor];
    self.scrollview.contentSize = imageView.image.size;
    
    // 设置代理
    self.scrollview.delegate = self;
}

#pragma mark - <UIScrollViewDelegate>
/**
 * 滑动的时候调用
 */
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidScroll------");
}

/**
 * 即将开始拖拽的时候调用
 */
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewWillBeginDragging------");
}

/**
 * 结束拖拽的时候调用
 */
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"scrollViewDidEndDragging------");
}

/**
 * (减速完毕)由于惯性停止滚动的时候调用
 */
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidEndDecelerating------");
}

@end

UIScrollView是可以对她的子控件进行缩放的

//
//  ViewController.m
//  UIScrollView的使用
//
//  Created by Daniel on 16/3/3.
//  Copyright © 2016年 Daniel. All rights reserved.
//

#import "ViewController.h"

@interface ViewController () <UIScrollViewDelegate>

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

@property (weak, nonatomic) UIImageView *imageView;


@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    
    //子控件
    UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"xx"]];
    [self.scrollView addSubview:imageView];
    self.imageView = imageView;
    
    self.scrollView.backgroundColor = [UIColor orangeColor];
    self.scrollView.contentSize = imageView.image.size;
    //设置代理
    self.scrollView.delegate = self;
    
    //设置最小的缩放比例
    self.scrollView.minimumZoomScale = 0.3;
    //设置最大的缩放比例
    self.scrollView.maximumZoomScale = 1.5;
    
}

#pragma mark - <UIScrollViewDelegate>
/** 该方法的返回值决定了要缩放的内容,而且被缩放的只能是UIScrollView的子控件 */
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    
    return self.imageView;
}

@end


© 著作权归作者所有

shenhuniurou
粉丝 19
博文 78
码字总数 63826
作品 0
广州
Android工程师
私信 提问
使用 Interface Builder 兼容 iOS6 和iOS7

当你在更新你的App到iOS 7的平台时遇到最大的挑战之一就是确保不要遗忘那些还在使用iOS 6平台的用户,在此我们提供一些建议使你的App应用在iOS 6和iOS 7上同时保留视觉吸引力和技术功能. 此图...

isaced
2014/01/15
13.4K
12
IOS开发系列--无限循环的图片浏览器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jianxin160/article/details/47753201 --UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在...

KenshinCui
2015/08/18
0
0
【IOS视频教学】三个月学会IOS开发

一、windows系统下安装虚拟机-mac系统-视频教程-安装件全套下载:http://www.wyzc.com/forum/56212.html 二、史上最佳0基础Swift语言视频教程下载链接:http://www.wyzc.com/forum/56744.htm...

马洪伟
2014/12/25
438
0
iOS 全屏侧滑手势/UIScrollView/UISlider间滑动手势冲突

一、前期准备 有一个支持全屏侧滑返回的视图控制器ViewController,ViewController.view上有一个UIScrollView,UIScrollView上有UISlider。俺直接在之前的示例Demo上演示,简书地址:iOS 自定...

且行且珍惜_iOS
2018/08/17
0
0
iOS电商常见动画与布局、微信悬浮窗、音乐播放器、歌词解析、拖动视图等源码

iOS精选源码 MXScroll 介绍 混合使用UIScrollView(http://www.code4app.com/thread-30678-1-1.html) ios 电商demo(实现各种常见动画效果和页面布局)(http://www.code4app.com/thread-30689......

sunnyaigd
2018/08/07
19
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
14
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部