您的位置:首页 > 其它

实现一张图片的缩放

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: