标签:
#import "RootViewController.h"
#define kScreenSize [UIScreen mainScreen].bounds.size
#define kPrintDebug NSLog(@"%s",__func__)
@interface RootViewController ()<UIScrollViewDelegate>
{
UIScrollView *_scrollView;
}
@end
@implementation RootViewController
- (void)dealloc {
[_scrollView release];
[super dealloc];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor lightGrayColor];
[self creatScrollView];
}
/*
- imageNamed:
- imageWithContentsOfFile:
区别:
1.- imageNamed: 加载图片
第一次 加载的时候 会把图片从app包内(手机磁盘) 加载到手机内存的缓存中,下次如果再加载相同的图片那么直接从缓存中加载,提高效率。但是缓存是有限的,app程序都要用到缓存,如果缓存低了那么直接影响app 运行效率。- imageNamed:方式加载的对象 是不释放的
应用场合:加载小图片 (几kb 几十kb),少量图片
2.- imageWithContentsOfFile: 加载图片
每次调用都会从app包内(磁盘) 中 获取,用完之后 也会自动释放。但是相对于- imageNamed:加载效率低一些
*/
- (void)creatScrollView {
//实例化一个滚动视图对象
//内容 是可以滚动的
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, kScreenSize.width, kScreenSize.height-90)];
//UIImage *image = [UIImage imageNamed: @"car4"];
//获取图片在app包内的路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"girl" ofType:@"jpg"];
UIImage *image = [UIImage imageWithContentsOfFile:path];
//设置图片的真实大小
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
imageView.image = image;
//粘贴到滚动视图
[_scrollView addSubview:imageView];
[imageView release];
//背景颜色
_scrollView.backgroundColor = [UIColor redColor];
//1.滚动视图的内容一般要大于 滚动视图的范围
//2.设置 滚动视图的 滚动范围 (滚动范围 一般就是 内容的大小范围)
// 滚动区域范围 > 滚动视图的范围
//设置滚动视图的滚动区域范围(要想滚动必须设置滚动内容大小)
_scrollView.contentSize = imageView.bounds.size;
//设置回弹(默认可以回弹)
_scrollView.bounces = YES;
//显示或者隐藏 滚动条 默认显示
_scrollView.showsHorizontalScrollIndicator = NO;//水平
_scrollView.showsVerticalScrollIndicator = NO;//竖直
//设置 是否可以滚动 NO禁用滚动
//_scrollView.scrollEnabled = NO;
//设置方向锁
_scrollView.directionalLockEnabled = YES;//同时允许一个方向滚动
//设置 内容 偏移量(相对于 粘到到滚动视图的位置滚动偏移)
//如果偏移量CGPointMake(-50 ,-50) 内容会向 右 下偏移
//如果偏移量CGPointMake(50 ,50) 内容会向 左 上偏移
//_scrollView.contentOffset = CGPointMake(-50 ,-50);
//点击状态栏是否可以滚动到内容视图的顶部
_scrollView.scrollsToTop = YES;
//设置缩放(必须设置代理 实现协议的方法)
//实现- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
_scrollView.minimumZoomScale = 0.5;
_scrollView.maximumZoomScale = 2.0;
//设置代理
_scrollView.delegate = self;
//self.view当前视图是RootViewVontroller,
[self.view addSubview:_scrollView];
}
#pragma mark - UIScrollViewDelegate
//常用1
//当 缩放 滚动视图 的视图 通知代理 返回一个指定 内容视图
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
//返回需要缩放的视图地址
//当前滚动视图中只有 一个 视图
return scrollView.subviews[0];
}
//常用2
//手指 将要拖拽滚动视图的时候调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
kPrintDebug;
}
//常用3
//滚动视图滚动的时候调用 滚动的时候一直调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
//kPrintDebug;
//CGPoint point = scrollView.contentOffset;
//NSLog(@"偏移量:%@",NSStringFromCGPoint(point));
}
//常用4
//将要结束拖拽的时候调用
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
kPrintDebug;
}
//常用5
//已经结束拖拽调用
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
kPrintDebug;
}
//常用6
//将要开始 减速停止 的时候调用
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
kPrintDebug;
}
//常用7
//已经 减速停止的时候调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
kPrintDebug;
}
//扩展
//将要开始 变形的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {
kPrintDebug;
}
//变形过程中一直调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
kPrintDebug;
}
//变形结束的时候调用
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
kPrintDebug;
}
//下面两个协议方法 有效 必须 设置滚动视图的_scrollView.scrollsToTop = YES;为yes
//_scrollView.scrollsToTop = YES;
//上面设置之后 可以通过 代理的协议的方法设置点击状态栏时候可以滚动顶部
//通过代理设置 点击状态栏是否可以滚动到顶部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView {
kPrintDebug;
return YES;
}
//点击状态栏已经滚动到顶部
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView {
kPrintDebug;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
标签:
原文地址:http://my.oschina.net/u/2410306/blog/524269