Ser*_*yov 9 iphone cocoa-touch objective-c uiscrollview ios
我已经成功实现UIImageView了我的缩放,UIScrollView但我遇到了一个令我恼火的奇怪问题.
基本上,当我放大图像时

我可以平移视图实际滚动出图像边框,我留下了这样的黑色区域:

随着我放大更多,我可以让黑色边框填满整个屏幕!同时在iPhone Photo应用程序中,您无法缩小实际图像.我的实施中有什么问题?
它看起来像这样:
UIImage *imageToDisplay = [UIImage imageWithData:tmpImageData];
imageViewMain.image = imageToDisplay;
imageViewMain.frame = CGRectMake(0, 0, scrollViewMain.frame.size.width, scrollViewMain.frame.size.height);
imageViewMain.contentMode = UIViewContentModeScaleAspectFit;
scrollViewMain.delegate = self;
scrollViewMain.minimumZoomScale = 1.0;
scrollViewMain.maximumZoomScale = 9.0;
scrollViewMain.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
scrollViewMain.contentSize = imageViewMain.frame.size;
[self.view addSubview:scrollViewMain];
[scrollViewMain addSubview:imageViewMain];
Run Code Online (Sandbox Code Playgroud)
我也实现了这个方法:
- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return imageViewMain;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:当我第一次加载视图时,我收缩我的UIImageView以适应滚动视图,图像如下所示:

只需尝试此代码....在需要的地方更改一些代码...用于UIPinchGestureRecognizer您的UIImageView然后将此图像添加到您的UIScrollView如下所示..
UIImageView *img = [[UIImageView alloc]init];
img.image = [UIImage imageWithData:tmpImageData];
img.userInteractionEnabled = YES;
img.frame = CGRectMake(210,100, 200, 200);/// define frame which you want...
[img sizeToFit];
UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)];
[pinchRecognizer setDelegate:self];
[img addGestureRecognizer:pinchRecognizer];
[pinchRecognizer release];
[scrollViewMain addSubview:img];
[scrollViewMain bringSubviewToFront:img];
[img release];
Run Code Online (Sandbox Code Playgroud)
并将以下代码粘贴到您的 .m 文件中...
#pragma mark GestureRecognizer Methods
-(void)scale:(id)sender
{
UIView *imgTempGest = [sender view];
if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded)
{
lastScale = 1.0;
return;
}
CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]);
CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);
[[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform];
[imgTempGest setTransform:newTransform];
lastScale = [(UIPinchGestureRecognizer*)sender scale];
}
Run Code Online (Sandbox Code Playgroud)
对于 LastScale,只需在.h文件中定义该变量,如下所示......
CGFloat lastScale;
Run Code Online (Sandbox Code Playgroud)
我希望这对你有帮助......
| 归档时间: |
|
| 查看次数: |
4669 次 |
| 最近记录: |