我有一个UIView,将图像加载到子视图中,并启用滚动和分页功能,运行正常。现在,我添加了一个缩小图像的手势,它正在工作,但有几个问题:
下面是代码:
NSDictionary *dictionary = [tmpAppDelegate.data objectForKey:selectedTitle];
NSArray *MenuImageArr = [[NSArray alloc] init];
MenuImageArr = [dictionary objectForKey:@"MenuArr"];
NSMutableArray *menuImages = [[NSMutableArray alloc] init];
scrollView.delegate = self;
// loop through all names from the plist and add image to the array
for (NSInteger i = 0; i < [MenuImageArr count]; i++) {
NSString *name = [MenuImageArr objectAtIndex:i];
[menuImages addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%@_%@", selectedTitle, name]]];
}
for (int i = 0; i < menuImages.count; i++) {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * i;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
subview = [[UIImageView alloc] initWithFrame:frame];
subview.image = [menuImages objectAtIndex:i];
[self.scrollView addSubview:subview];
}
self.pageControl.numberOfPages = menuImages.count;
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * menuImages.count, self.scrollView.frame.size.height);
}
- (void)scrollViewDidScroll:(UIScrollView *)sender {
// Update the page when more than 50% of the previous/next page is visible
CGFloat pageWidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
self.pageControl.currentPage = page;
}
- (IBAction)changePage {
// update the scroll view to the appropriate page
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES];
pageControlBeingUsed = YES;
}
- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer {
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
recognizer.scale = 1;
}我不知道如何处理这些问题。
发布于 2012-03-15 09:30:05
我做了类似的事。在我的例子中,我通过将min和maxzoomscale设置为1来禁用滚动视图中的缩放。
然后,我的夹点处理程序将从手势参数中计算出缩放因子,并告诉包含在滚动视图中的视图重新绘制。这将处理缩放本身。按压手柄应限制缩放因子。记住,从手势识别器传入的缩放因子不是绝对比例尺,而是上次事件的增量。
你需要这样做:
...
float lastScale = 1;
...
- (void) pinchGestureRecognizer:(UIPinchGestureRecognizer*) recognizer
{
float newScale = self.myScale + ( recognizer.scale - lastScale )
self.myDrawing.scale = newScale;
if ( recognizer.state === UIGestureRecognizerStateEnded )
{
lastScale = 1;
return;
}
lastScale = recognizer.scale;
[self.myDrawing setNeedsDisplay];
}这是我的头绪,希望能有所帮助。
我的确切情况略有不同,因为我正在手动绘制一些SVG向量,但原理应该非常相似
发布于 2012-03-19 23:02:06
解决了!使用UIWebview加载一个pdf。在pathForResource的主包中找出正确的路径有些困难。
NSString *path = [[NSBundle mainBundle] pathForResource:@"Millennium_meny" ofType:@"pdf"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
[webView setScalesPageToFit:YES];谢谢!
https://stackoverflow.com/questions/9705010
复制相似问题