初识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导出 ...
随机推荐
- C# 读取压缩文件方式及乱码处理
目前主流的压缩文件操作类,除了C#原生的.还有 1. ZIP-DotNetZip 网址:http://dotnetzip.codeplex.com/ 2 7Zip-SevenZipSharp 网址:h ...
- 自己动手搭建 CAS(Central Authentication Service) 环境,为了单点登录(Single Sign On , 简称 SSO )
介绍 刚刚搭建 CAS 成功了,现在记录下来,怕以后忘记,同时也给需要帮助的人.CAS 搭建需要服务端和客户端,服务端是 Java 写的,如果自己搭建则需要安装与配置 Java 环境.客户端可以是多种 ...
- Metatable和Metamethod
Metatable和Metamethod是用来干啥的?它们可以使得表a和b的表达式“a + b”变得有意义,其中metatable使两个不相关的表a和b之间可以进行操作,而操作的具体行为比如说&quo ...
- Flow: JavaScript静态类型检查工具
Flow: JavaScript静态类型检查工具 Flow是Facebook出品的,针对JavaScript的静态类型检查工具.其代码托管在github之上,并遵守BSD开源协议. 关于Flow 它可 ...
- 启动weblogic的错误:Could not obtain an exclusive lock to the embedded LDAP data files directory
http://hi.baidu.com/kaisep/item/0e4bf6ee5da001d1ea34c986 源地址 启动weblogic的错误:Could not obtain an exclu ...
- Mac常用基本命令/常用Git命令
Git地址: https://github.com/mancongiOS/command-line基本命令 目录/文件的操作 mkdir "目录名" 在当前路径下创建一个文件夹 m ...
- 【转】MSSQLServer数据库事务锁机制分析
锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性.各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别.目前,大多数数据库管理系统都或多或少具有自我调 ...
- Java魔法堂:JUnit4使用详解
目录 1. 开 ...
- SecureCRT连接linux设置vim显示颜色
只需要两个步骤: 1) 选项 --> 会话选项 --> 终端 --> 仿真 --> 勾选“ANSI 颜色”. 2) 在.bashrc中添加:export TERM=xter ...
- MyEclipse搭建SSM框架(Spring+MyBatis+SpringMVC)
待写. 参考网址 http://www.cnblogs.com/Joetao/articles/4544572.html http://www.cnblogs.com/verlen11/p/53497 ...