实现一张图片的缩放
2015-09-28 16:03
417 查看
-(void)addAllViews
{
UIScrollView *scrollView = [[UIScrollView
alloc]initWithFrame:[UIScreen
mainScreen].bounds];
self.scrollView = scrollView;
//要想可以缩放视图,需要设置最小和最大缩放比例。
scrollView.minimumZoomScale =
0.8;
scrollView.maximumZoomScale =
3;
[self
addSubview:scrollView];
//加载图片
UIImageView *imageView = [[UIImageView
alloc]initWithImage:[UIImage
imageNamed:@"pingmu.png"]];
imageView.frame =
CGRectMake(0,
0, 1280,
1000);
self.imageView = imageView;
self.imageView.tag =
100;
[self.scrollView
addSubview:imageView];
//设置内容尺寸,关键点:contenSize跟scrollView本身的大小。
scrollView.contentSize = imageView.frame.size;
//
设置偏移量
// scrollView.contentOffset = CGPointMake(100, 0);
//点击状态栏,是否回到顶部,默认是YES
scrollView.scrollsToTop =
YES;
//设置是否整页滑动
scrollView.pagingEnabled =
YES;
//是否开启边界回弹效果.就是能看到scrollView,默认是YES,只是限制手势上的滚动。
scrollView.bounces =
NO;
//设置是否允许图片滚动,默认是是YES
scrollView.scrollEnabled =
YES;
//如果contentSize < scrollView
的大小,设置alwaysBounceVertical
以及 alwaysBounceHorizontal 属性,也是可以滑动的。
imageView.frame =
self.frame;
scrollView.alwaysBounceHorizontal =
YES;
scrollView.alwaysBounceVertical =
YES;
}
=================================================
- (void)viewDidLoad {
[super
viewDidLoad];
#pragma mark ============= UIScrollView ==================
self.rootView.scrollView.delegate
= self;
}
//实现协议方法
- (void)scrollViewDidScroll:(UIScrollView *)sender
{
NSLog(@"%@",sender);
}
//设置可以缩放的图片
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
//通过tag值,获取内部的图片,并返回。
return [scrollView
viewWithTag:100];
}
//view是可以缩放的那个视图。
-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView
*)view atScale:(CGFloat)scale
{
//单独这样设置的话,放大的时候,就会因为contenSize的大小而舍弃掉某些内容。
// view.center = scrollView.center;
//由于缩放即是修改了缩放视图的大小,也修改了contentSize,所以不能单纯的使用。center。
//获取缩放视图的位置和大小
CGRect viewFrame = view.frame;
//获取scrollView的大小
CGSize scrollViewSize = scrollView.frame.size;
//如果内容视图的宽度,小于scrollView的宽度,需要进行计算,否则,设置为0.
if (viewFrame.size.width < scrollViewSize.width) {
viewFrame.origin.x = (scrollViewSize.width - viewFrame.size.width)/2;
}else
{
viewFrame.origin.x =
0;
}
//如果内容视图的高度,小于scrollView的宽度,需要进行计算,否则,设置为0.
if (viewFrame.size.height < scrollViewSize.height) {
viewFrame.origin.y = (scrollViewSize.height - viewFrame.size.height)/2;
}else
{
viewFrame.origin.y =
0;
}
//将计算好的值
赋给view。
view.frame = viewFrame;
}
{
UIScrollView *scrollView = [[UIScrollView
alloc]initWithFrame:[UIScreen
mainScreen].bounds];
self.scrollView = scrollView;
//要想可以缩放视图,需要设置最小和最大缩放比例。
scrollView.minimumZoomScale =
0.8;
scrollView.maximumZoomScale =
3;
[self
addSubview:scrollView];
//加载图片
UIImageView *imageView = [[UIImageView
alloc]initWithImage:[UIImage
imageNamed:@"pingmu.png"]];
imageView.frame =
CGRectMake(0,
0, 1280,
1000);
self.imageView = imageView;
self.imageView.tag =
100;
[self.scrollView
addSubview:imageView];
//设置内容尺寸,关键点:contenSize跟scrollView本身的大小。
scrollView.contentSize = imageView.frame.size;
//
设置偏移量
// scrollView.contentOffset = CGPointMake(100, 0);
//点击状态栏,是否回到顶部,默认是YES
scrollView.scrollsToTop =
YES;
//设置是否整页滑动
scrollView.pagingEnabled =
YES;
//是否开启边界回弹效果.就是能看到scrollView,默认是YES,只是限制手势上的滚动。
scrollView.bounces =
NO;
//设置是否允许图片滚动,默认是是YES
scrollView.scrollEnabled =
YES;
//如果contentSize < scrollView
的大小,设置alwaysBounceVertical
以及 alwaysBounceHorizontal 属性,也是可以滑动的。
imageView.frame =
self.frame;
scrollView.alwaysBounceHorizontal =
YES;
scrollView.alwaysBounceVertical =
YES;
}
=================================================
- (void)viewDidLoad {
[super
viewDidLoad];
#pragma mark ============= UIScrollView ==================
self.rootView.scrollView.delegate
= self;
}
//实现协议方法
- (void)scrollViewDidScroll:(UIScrollView *)sender
{
NSLog(@"%@",sender);
}
//设置可以缩放的图片
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
//通过tag值,获取内部的图片,并返回。
return [scrollView
viewWithTag:100];
}
//view是可以缩放的那个视图。
-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView
*)view atScale:(CGFloat)scale
{
//单独这样设置的话,放大的时候,就会因为contenSize的大小而舍弃掉某些内容。
// view.center = scrollView.center;
//由于缩放即是修改了缩放视图的大小,也修改了contentSize,所以不能单纯的使用。center。
//获取缩放视图的位置和大小
CGRect viewFrame = view.frame;
//获取scrollView的大小
CGSize scrollViewSize = scrollView.frame.size;
//如果内容视图的宽度,小于scrollView的宽度,需要进行计算,否则,设置为0.
if (viewFrame.size.width < scrollViewSize.width) {
viewFrame.origin.x = (scrollViewSize.width - viewFrame.size.width)/2;
}else
{
viewFrame.origin.x =
0;
}
//如果内容视图的高度,小于scrollView的宽度,需要进行计算,否则,设置为0.
if (viewFrame.size.height < scrollViewSize.height) {
viewFrame.origin.y = (scrollViewSize.height - viewFrame.size.height)/2;
}else
{
viewFrame.origin.y =
0;
}
//将计算好的值
赋给view。
view.frame = viewFrame;
}
相关文章推荐
- Xcode7下支付宝AlipaySDK编译错误解决办法
- 在xcode上选不了真机的问题
- redis php扩展安装
- [LeetCode] 9.Palindrome Number
- Android 工程重命名错误
- 如何在数据采集程序中判断JPG文件下载完整了?
- 在手机的sd卡上创建一个以当天日期为命名的文件夹
- 前端基础
- Http协议与TCP协议简单理解
- 101个MySQL开源数据库调试和优化技巧
- Swift - 委托(delegate)的介绍,及使用样例
- POJ 2528 Mayor's posters 线段树+离散化
- C# .NET 发送邮件 代码
- 统计一个C类网段可用IP并添加邮件提醒
- sqlite插入记录值为纯数字的字符串的问题以及sqlite语句中字符串的拼接
- jquery可拖动表格调整列格子的宽度大小
- jquery.each容易错的地方
- mye发布web项目到jetty7报错:java.lang.ClassNotFoundException: org.eclipse.jetty.plus.webapp.EnvConfiguration
- cell高度自适应
- ajax异步加载问题