初识UIScrollView
RootView.m
#import "RootView.h"
#define YHColor [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 / 255.0 blue:arc4random() % 256 / 255.0 alpha:1] @implementation RootView - (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self add];
}
return self;
} - (void)add { // 添加滚动
self.scrollView = [[UIScrollView alloc] initWithFrame:self.frame];
self.scrollView.backgroundColor = YHColor;
//self.scrollView.contentSize = CGSizeMake(self.frame.size.width * 10, 0); [self addSubview:self.scrollView]; // 添加图片 self.imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"002.jpg"]]; // 用此方法就不用设置frame,因为frame就是图片的大小
[self.scrollView addSubview:self.imgView]; self.scrollView.contentSize = self.imgView.frame.size; //设置滚动范围(根据图片尺寸滚动) self.scrollView.showsHorizontalScrollIndicator = NO; // 隐藏垂直滚动条
self.scrollView.showsVerticalScrollIndicator = NO; // 隐藏水平滚动条 self.scrollView.bounces = YES; // 设置是否回弹
// self.scrollView.alwaysBounceHorizontal = NO; // 设置水平方向是否回弹(必须要设置滚动范围是屏幕大小,否则不起作用)
// self.scrollView.alwaysBounceVertical = YES; // 设置垂直方向是否回弹(必须要设置滚动范围是屏幕大小,否则不起作用) // self.scrollView.contentSize = CGSizeMake(self.imgView.frame.size.width, 0); // 只要水平滚动
// self.scrollView.contentSize = CGSizeMake(0, self.imgView.frame.size.height); // 只要垂直滚动 // 设置偏移量,规定要显示的位置
self.scrollView.contentOffset = CGPointMake(, ); // 设置缩放
self.scrollView.minimumZoomScale = 0.1; // 设置最小比例
self.scrollView.maximumZoomScale = ; // 设置最大比例
//self.scrollView.zoomScale = 1; // 设置当前缩放比例(不能在这里设置,要在viewController里设置才行)
}
@end
RootViewController.m
#import "RootViewController.h"
#import "RootView.h" @interface RootViewController () <UIScrollViewDelegate> @property (nonatomic, strong) RootView *rootView; @end @implementation RootViewController - (void)loadView {
self.rootView = [[RootView alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.view = self.rootView;
} - (void)viewDidLoad {
[super viewDidLoad]; // 设置代理
self.rootView.scrollView.delegate = self; // 当前缩放比例
self.rootView.scrollView.zoomScale = 0.5; } #pragma mark - 实现协议方法(监测滚动状态)
// 即将开始滚动
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
NSLog(@"开始滚动");
} // 滚动完成
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSLog(@"结束滚动");
} // 即将开始手动拖拽
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
NSLog(@"即将开始手动拖拽");
} // 手动拖拽完成
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
NSLog(@"手动拖拽完成");
} // 一直滚动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"一直滚动%f", scrollView.contentOffset.x);
} #pragma mark - 视图缩放
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { // 返回要缩放的视图
return self.rootView.imgView;
} // 缩放完成,把图片设置为中间位置
- (void)scrollViewDidZoom:(UIScrollView *)scrollView { self.rootView.imgView.center = self.view.center;
} @end
初识UIScrollView的更多相关文章
- IOS之UI -- UITableView -- 1 -- 相关初识
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 【原】Masonry+UIScrollView的使用注意事项
[原]Masonry+UIScrollView的使用注意事项 本文转载请注明出处 —— polobymulberry-博客园 1.问题描述 我想实现的使用在一个UIScrollView依次添加三个UI ...
- Android动画效果之初识Property Animation(属性动画)
前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...
- 初识Hadoop
第一部分: 初识Hadoop 一. 谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...
- python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)
一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...
- 初识IOS,Label控件的应用。
初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...
- UIScrollView的封装
UIScrollView的封装 效果 特点 1.用法简单,尺寸大小,随意设置位置 2.可以有多个数据源的数据,可以定制不通的界面(如同上图,一个有文字,一个没有文字) 3.能够实现点击事件 用法 1. ...
- UI篇(初识君面)
我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
随机推荐
- 在Eclipse中进行HotSpot的源码调试--转
原文地址:http://www.linuxidc.com/Linux/2015-05/117250.htm 在阅读OpenJDK源码的过程中,经常需要运行.调试程序来帮助理解.我们现在已经可以编译出一 ...
- IP Failover Setup using Keepalived on CentOS/Redhat 6
source url:http://tecadmin.net/ip-failover-setup-using-keepalived-on-centos-redhat-6/ Keepalived is ...
- EXCEL 数字+E+数字 自动识别为指数形式的解决办法
1.今天从数据库导出excel表时,出现本来为"2E3"的单元格错误显示为"2.00E+03"的情况 2.而设置 单元格格式 为"文本"后, ...
- static、final、static final 用法
1.使用范围:类.方法.变量.2.区别和联系:2.1.static 含义:静态的,被 static 修饰的方法和属性只属于类不属于类的任何对象.2.2.static 用法:2.2.1.static 可 ...
- C#加密类
var es= EncryptSugar.GetInstance(); string word = "abc"; var wordEncrypt = es.Encrypto(wor ...
- 另一个 OleDbParameterCollection 中已包含 OleDbParameter 错误分析及解决办法
程序非常简单,就是从一个表中取出一个符合要求的数据,如果取到,就把该数据对应的计数加1.也就是执行不同的两个SQL语句操作同一个表,并且这两个SQL的参数是一样的.在一个函数里完成这个调用.执行第二个 ...
- [JS] JavaScript由浅入深(1) 基本特性
1.全局变量的特性: 在函数体内直接写的变量(未用var标志)自动升级为全局变量. (function func() { i = 100; }()); alert(i); 非常不建议不写var. va ...
- 重构第4天:降低方法(Push Down Method)
理解:降低方法,就是把基类中的某个方法,提出来放到继承类当中去. 详解: 上一节我们讲了方法的提公,是把多于一个继承类都要用到的方法,提出来放到基类中去,来提高代码的可维护性和重用性.那么这一节,我们 ...
- 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。
错误:已超过传入消息(65536)的最大消息大小配额.若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性. 或者 错误:反序列化操作“GetAllUserData ...
- Azure开发者任务之三:理解Azure应用程序(上)
作为Windows Azure的托管服务被设计和开发的应用程序由这两部分组成: 1,托管代码 2,XML配置文件 托管代码对应不同的角色 XML文件对应不同的配置设置 我们可以看一下下面这张图,它详细 ...