这篇博客写一下缩放UIScrollView视图的方法。
直接上代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// 1.设置scroll view的基本属性
scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
scrollView.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:scrollView];
// 2.设置scroll view与zoom相关的属性
scrollView.minimumZoomScale = 0.5;
scrollView.maximumZoomScale = 10.0;
scrollView.zoomScale = 1.0;
scrollView.bouncesZoom = YES;
scrollView.contentSize = CGSizeMake(640.0, 1136.0);
scrollView.delegate = self;
// 3.添加一张图片
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.jpg"]];
[scrollView addSubview:imageView];
imageView.center = scrollView.center;
}
#pragma mark - UIScrollView Delegate
/* 在scrollview中Zoom的目标视图 */
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return imageView;
}
/* scrollview将要开始Zooming */
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {
NSLog(@"Begin Zooming");
}
/* scrollview已经发生了Zoom事件 */
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
NSLog(@"Did Zoom");
}
/* scrollview完成Zooming */
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
if (self.scrollView.zoomScale > 1) {
imageView.center = CGPointMake(self.scrollView.contentSize.width / 2, self.scrollView.contentSize.height / 2);
}
else {
imageView.center = self.view.center;
}
CGSize size = self.scrollView.contentSize;
NSLog(@"Content size of scroll view");
NSLog(@"w = %f, h = %f", size.width, size.height);
NSLog(@"----------------------------");
NSLog(@"zoomscale = %f", self.scrollView.zoomScale);
NSLog(@"----------------------------");
CGRect boundsOfScrollView = self.scrollView.bounds;
NSLog(@"Bounds of scroll view");
NSLog(@"x = %f, y = %f", boundsOfScrollView.origin.x, boundsOfScrollView.origin.y);
NSLog(@"w = %f, h = %f", boundsOfScrollView.size.width, boundsOfScrollView.size.height);
}
还有头文件:
@interface ZoomViewController : UIViewController <UIScrollViewDelegate>
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) UIImageView *imageView;
@end
以上程序的功能是实现Scroll View中的Image View的缩放,并使图片处于当前视图中心(简单的设置)。
有几点需要注意:
1.为了完成对UIScrollView的缩放,必须设置scrollview的delegate为自己并实现相应方法。
2.scrollview的min zoom scale和max zoom scale参数必须不一致(并且max zoom scale大于min zoom scale),否则不能完成缩放。
3.在UIScrollViewDelegate方法中:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
给出进行Zoom的视图。
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
当视图将要开始缩放时,要进行的动作可以在这里完成。
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
当视图缩放动作已经发生了。
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
当scroll view完成zooming时的响应方法,这里scale为zoom的倍数,在min zoom scale到max zoom scale之间。
通常可以在这里进行一些视图布局,例如设置zoom的view在scroll view视图中心。
ScrollView的简单学习先到这里,继续回去做PDF的缩放。
以后遇到相关问题再写博客补充。