我正在尝试在 iPhone 上复制照片应用程序。意思是,一个带有多个图像的滚动视图,每个图像都可以被捏合以放大/缩小。
Apple ScrollViewSuite 示例代码仅处理滚动视图内的 1 个图像。我发现对于多个图像,滚动图像变得不可预测。此外,捏缩放后视图变得不居中。
我在 Stack Overflow 上找到了这个:Zoom UIScrollView with multiple images
但是,我应该在滚动视图委托函数中写什么?
我正在尝试在 iPhone 上复制照片应用程序。意思是,一个带有多个图像的滚动视图,每个图像都可以被捏合以放大/缩小。
Apple ScrollViewSuite 示例代码仅处理滚动视图内的 1 个图像。我发现对于多个图像,滚动图像变得不可预测。此外,捏缩放后视图变得不居中。
我在 Stack Overflow 上找到了这个:Zoom UIScrollView with multiple images
但是,我应该在滚动视图委托函数中写什么?
这就是我发现的工作。支持具有分页和缩放的多个图像。享受!
#define VIEW_FOR_ZOOM_TAG (1)
@implementation SVViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
mainScrollView.pagingEnabled = YES;
mainScrollView.showsHorizontalScrollIndicator = NO;
mainScrollView.showsVerticalScrollIndicator = NO;
CGRect innerScrollFrame = mainScrollView.bounds;
for (NSInteger i = 0; i < 3; i++) {
UIImageView *imageForZooming = [[UIImageView alloc] initWithImage:[UIImage imageNamed:
[NSString stringWithFormat:@"page%d", i + 1]]];
imageForZooming.tag = VIEW_FOR_ZOOM_TAG;
UIScrollView *pageScrollView = [[UIScrollView alloc] initWithFrame:innerScrollFrame];
pageScrollView.minimumZoomScale = 1.0f;
pageScrollView.maximumZoomScale = 2.0f;
pageScrollView.zoomScale = 1.0f;
pageScrollView.contentSize = imageForZooming.bounds.size;
pageScrollView.delegate = self;
pageScrollView.showsHorizontalScrollIndicator = NO;
pageScrollView.showsVerticalScrollIndicator = NO;
[pageScrollView addSubview:imageForZooming];
[mainScrollView addSubview:pageScrollView];
if (i < 2) {
innerScrollFrame.origin.x += innerScrollFrame.size.width;
}
}
mainScrollView.contentSize = CGSizeMake(innerScrollFrame.origin.x +
innerScrollFrame.size.width, mainScrollView.bounds.size.height);
[self.view addSubview:mainScrollView];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return [scrollView viewWithTag:VIEW_FOR_ZOOM_TAG];
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (BOOL)shouldAutorotate {
return NO;
}
@end