我有一个用 UIImageView 填充的 UIScrollView。UIScrollView 启用分页以让用户“翻转”这些图像。每个 UIImageView 都有用于缩放缩放的 UIPinchGestureRecognizer 和用于在放大时平移该图像的 UIPanGestureRecognizer。
您可能已经注意到,我想要实现的就像 iBooks 在其应用程序中所做的一样。
但是,我很难完成这项工作。
在我的“BookPageViewController”中,我设置了 UIScrollView,然后根据来自 sqlite 的数据(页码、文件名等)用文件夹中的图像填充它们。
_pageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
NSUInteger pageCount = [pages count];
for (int i = 0; i < pageCount; i++) {
CGFloat x = i * self.view.frame.size.width;
// Page Settings
UIImageView *pageView = [[UIImageView alloc] initWithFrame:CGRectMake(x, 0, self.view.frame.size.width, self.view.frame.size.height)];
pageView.backgroundColor = [UIColor greenColor];
pageView.image = [pages objectAtIndex:i];
pageView.userInteractionEnabled = YES;
pageView.tag = i;
// Gesture Reocgnisers
UIPinchGestureRecognizer *pinchGr = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchImage:)];
pinchGr.delegate = self;
[pageView addGestureRecognizer:pinchGr];
UIPanGestureRecognizer *panGr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panImage:)];
[pageView addGestureRecognizer:panGr];
// Finally add this page to the ScrollView
[_pageScrollView addSubview:pageView];
}
_pageScrollView.contentSize = CGSizeMake(self.view.frame.size.width * pageCount, self.view.frame.size.height);
_pageScrollView.pagingEnabled = YES;
_pageScrollView.delegate = self;
[self.view addSubview:_pageScrollView];
在 Stackoverflow 中另一个好问题的帮助下,我提出了这些问题:
- (void) pinchImage:(UIPinchGestureRecognizer*)pgr {
[self adjustAnchorPointForGestureRecognizer:pgr];
if ([pgr state] == UIGestureRecognizerStateBegan || [pgr state] == UIGestureRecognizerStateChanged) {
if ([pgr scale]) {
NSLog(@"SCALE: %f", [pgr scale]);
[pgr view].transform = CGAffineTransformScale([[pgr view] transform], [pgr scale], [pgr scale]);
[pgr setScale:1];
} else {
NSLog(@"[PAMPHLET PAGE]: The image cannot be scaled.");
}
}
}
我的问题是,当我使用 Pinch Gesture 放大 UIImageView 之一时,图像超过(越过)到下一个图像并隐藏它。我相信应该有办法“限制”放大/缩小和 UIImageView 的大小(不是 UIImage 本身),但我不知道从这里去哪里。我还放了一个代码来限制规模,例如:
([pgr scale] > 1.0f && [pgr scale] < 1.014719) || ([pgr scale] < 1.0f && [pgr scale] > 0.98f)
但它没有用......
我知道这对 ios 专业人士来说并不难,但我对 Objective-c 还是很陌生,这是我第一次开发真正的应用程序。如果这不是一个好的做法,我也想知道任何想法来实现如何像 ibooks 那样做到这一点(例如,将 UIImageView 放在 UIScrollView 中,然后将 UIScrollView 放到另一个 UIScrollView 中)......
对不起,另一个初学者问题,但我真的需要帮助。
提前致谢。