針對圖片放大縮小
花了點時間找了些資料
實作的時候卻發現在zoom的時候圖片怪怪的
原來魔鬼藏在細節裡
大致上最重要的一句話就是
//如果不加这句的话
[imageView setFrame:CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height)];
//那么正常拖动是可以的,但是如果zoom了 就会有问题
全整的程式碼
scrollViewController.h
記得加上UIScrollViewDelegate
這樣才有拖拉放大縮小的效果
#import
@interface scrollViewController : UIViewController {
IBOutlet UIScrollView *scrollView;
UIImageView *imageView;
}
@end
scrollViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
[scrollView setMinimumZoomScale:1.0];
[scrollView setMaximumZoomScale:5.0];
scrollView.delegate = self;
scrollView.bounces = NO;
[scrollView setShowsHorizontalScrollIndicator:NO];
[scrollView setShowsVerticalScrollIndicator:NO];
[scrollView setBackgroundColor:[UIColor blackColor]];
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.jpg"]];
[imageView setContentMode:UIViewContentModeScaleAspectFit];
//如果不加这句的话
[imageView setFrame:CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height)];
//那么正常拖动是可以的,但是如果zoom了 就会有问题
//zoom发生后会把frame变成当前显示大小[imageview默认大小 屏幕显示大小 如是全屏则就是全屏大小] zoom变化导致frame同步改变了image的size 大小为frame大小
//image 的size改变后导致self.scrollView.contentSize 变成了frame的大小 从而contentSize变小了 无法实现正常拖动。
//然后根据zoom缩放比例变化。而不是根据实际图片大小。这么导致zoom后就无法拖动了[因为frame大小]
scrollView.contentSize = imageView.frame.size;
[scrollView addSubview:imageView];
[scrollView setZoomScale:scrollView.minimumZoomScale];
}
#pragma mark - UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)_scrollView {
return imageView;
}
沒有留言:
張貼留言