你可能会这样做的困难。建议您考虑将UIImageView
添加到UIScrollView
,并让滚动视图为您完成工作。例如:
页眉与UIScrollViewDelegate
:
#import <UIKit/UIKit.h>
@interface MyScrollViewController : UIViewController <UIScrollViewDelegate>
@end
实现显示滚动视图,允许设置缩放:
#import "MyScrollViewController.h"
#define MIN_ZOOM_FACTOR 1
#define MAX_ZOOM_FACTOR 5
@interface MyScrollViewController() {
UIScrollView *scrollView;
UIImageView *imageView;
}
@end
@implementation MyScrollViewController
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];
scrollView.backgroundColor = [UIColor clearColor];
scrollView.delegate = self;
scrollView.contentSize = CGSizeMake(self.view.bounds.size.width * MAX_ZOOM_FACTOR,
self.view.bounds.size.height * MAX_ZOOM_FACTOR);
scrollView.minimumZoomScale = MIN_ZOOM_FACTOR;
scrollView.maximumZoomScale = MAX_ZOOM_FACTOR;
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"your_image_name.png"]];
imageView.frame = scrollView.frame;
imageView.contentMode = UIViewContentModeScaleAspectFit;
[scrollView addSubview:imageView];
}
#pragma mark - Scroll view delegate methods
-(UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView{
return imageView;
}
@end
如果你想平移时,需要了解和缩放发生,什么缩放比例等,实施附加的UIScrollViewDelegate
方法。例如:
-(void)scrollViewDidZoom:(UIScrollView *)zoomedScrollingView{
float zoomScale = scrollView.zoomScale;
// Do something with zoomScale...
}
这可以工作,它似乎基于中心位置调整大小,但是当调整大小结束时,它会捕捉到左上角。即使当我使用'scrollViewDidEndZooming'中的代码将帧重置为与之前相同的位置时,它仍然会捕捉到左上角的第一个 –