ScrollView zoom有这个问题。有很多关于它的文章,但不知怎的,我找不到正确的解释,教程或代码片段。
我有全屏滚动视图和全屏图像视图。在imageview内部我加载了AspectFit图像(它们可以是垂直或水平,水平的图像上方和下方都有黑色空间)。当我进行变焦时,我不仅可以缩放图像,还可以缩放周围的区域(图像视图的其余部分)。此外,当我在变焦时旋转模拟器时,图像会转到右上角,而不是像开始那样居中。甚至几乎没有像素离开屏幕。
我真的想要缩放图像而不是整个图像视图,或者至少在缩放时始终使图像居中。
欢迎任何帮助..
答案 0 :(得分:1)
我解决了这个问题,它不是最好的代码,但现在对我有用,我可能稍后会清理它。在这里发帖,也许它会帮助某人:)
UIImage *img = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:someImage ofType:@"jpg"]];
CGFloat scale;
if (scrollView.frame.size.width < scrollView.frame.size.height) // portrait
scale = scrollView.frame.size.width / img.size.width;
if (scrollView.frame.size.width > scrollView.frame.size.height) // landscape
scale = scrollView.frame.size.height / img.size.height;
imgView.frame = CGRectMake(scrollView.frame.origin.x, scrollView.frame.origin.y,
img.size.width*scale, img.size.height*scale);
imgView.center = CGPointMake(scrollView.frame.size.width/2, scrollView.frame.size.height/2);
[imgView setImage:img];
[scrollView setZoomScale:scale];
答案 1 :(得分:0)
来自PhotoScroller示例;将其添加到layoutSubviews:
// center the image as it becomes smaller than the size of the screen
CGSize boundsSize = self.bounds.size;
CGRect frameToCenter = imageView.frame;
// center horizontally
if (frameToCenter.size.width < boundsSize.width)
frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
else
frameToCenter.origin.x = 0;
// center vertically
if (frameToCenter.size.height < boundsSize.height)
frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
else
frameToCenter.origin.y = 0;
imageView.frame = frameToCenter;
这对缩放图像无效,但至少在缩放时它会保持居中。