初识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导出 ...
随机推荐
- 七牛portal可用性测试记
引言:2013年年底应七牛公司朋友的邀请,给他们的Portal进行可用性测试.七牛(http://www.qiniu.com/)一直专注于云存储基础服务,在业内颇有声誉.七牛云存储的后台选用并不常用的 ...
- Android自定义之仿360Root大师水纹效果
很简单的一个效果.我直接上图了. 代码就不详细说了,贴出关键代码就行了. @Override protected void onDraw(Canvas canvas) { s ...
- Install Redis on CentOS 6.4--转
Install Redis on CentOS 6.4 source:http://thoughts.z-dev.org/2013/05/27/install-redis-on-centos-6-4/ ...
- Angular系列----AngularJS入门教程04:迭代器过滤(转载)
我们在上一步做了很多基础性的训练,所以现在我们可以来做一些简单的事情喽.我们要加入全文检索功能(没错,这个真的非常简单!).同时,我们也会写一个端到端测试,因为一个好的端到端测试可以帮上很大忙.它监视 ...
- shell join 参数详细说明
join类似db里面的join方法,同样有left join right join inner join等 指定参数-a 可以指定join的方式. -a1表示显示第一个文件中不匹配的行,即为left ...
- 控制器中的Action方法,接收浏览器传过来的参数,总共有几种?
1.根据配置文件中的URL规则 public ActionResult Delete(int id) //id参数就是根据路由里面的参数id来传过来的,这个action方法中的参数一定要和路由中的id ...
- 字符串 --- KMP Eentend-Kmp 自动机 trie图 trie树 后缀树 后缀数组
涉及到字符串的问题,无外乎这样一些算法和数据结构:自动机 KMP算法 Extend-KMP 后缀树 后缀数组 trie树 trie图及其应用.当然这些都是比较高级的数据结构和算法,而这里面最常用和最熟 ...
- 使用openssl生成RSA公私密钥
在windows 环境下 1.进入cmd命令窗口 切换到openssl程序目录下 2.输入openssl.exe,进入openssl命令模式下 3.生成私钥输入“genrsa -out app_pri ...
- Android入门:Activity四种启动模式
一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置: 启动模式有4种,分别为standa ...
- 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性
[源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件 ...