我正在为iPad一个简单的应用程序,包含您可以放大/缩小和浏览一个巨大的形象。的UIImageView/UIScrollView的强制固定纵横比,以适应屏幕
该图像被放置在UIImageView
,然后将其放在一个UIScrollView
内部内。
导航和细变焦工作100%;然而,图像以固定长宽比装载以适合屏幕,并且永远不会改变(即使在放大时)。
我有一种感觉,界面生成器被设置一些属性,我不知道,但我已经试过了我能想到的解决这个问题的一切。
问题:
当应用程序最初加载时,UIScrollView
里面的内容是自动重新调整大小由具有其长宽比changed./fixed精确地适应iPad屏幕;实际的图像是巨大的(比iPad的分辨率更大)。即使在放大图像时,该缩放纵横比仍然保持不变,并导致图像看起来拉长。
无论我怎么努力,我不能自动重新调整我的图片停止了iPad。我只是希望应用程序从iPad上正常显示图像(100%缩放)开始,目前适合iPad屏幕的部分位于图像的左上角。
我一直试图修复它:
我试图改变在Interface Builder中UIImageView's
内容模式为“左上”。这似乎是完美的工作,但后来我意识到UIScrollView
不会让你滚动图像经过最初显示的部分(左上角)。您可以放大左上部分并滚动,但不要过去最初显示在屏幕上的内容。
代码:
下面是我使用的设置视图的代码。 imageScrollView
是UIScrollView
,并且imageView
是UIImageView
。它们都是IBOutlets
。
// Set the needed attributes of the imageView
[imageView setImage:[UIImage imageNamed: @"TestImage.png"]];
imageView.userInteractionEnabled = YES;
// Set a bunch of the imageScrollView attributes.
// calculate minimum scale to perfectly fit image width, and begin at that scale
float minimumScale = [imageScrollView frame].size.width/[imageView frame].size.width;
[imageScrollView setMinimumZoomScale:minimumScale];
[imageScrollView setZoomScale:1];
[imageScrollView setMaximumZoomScale:10];
[imageScrollView setContentSize:CGSizeMake(imageView.frame.size.width, imageView.frame.size.height)];
[imageScrollView setScrollEnabled:YES];
[imageScrollView setUserInteractionEnabled:YES];
imageScrollView.clipsToBounds = YES;
imageScrollView.bounces = FALSE;
imageScrollView.bouncesZoom = FALSE;
我也有两个UIGestureRecongizers
来处理自来水变焦,但我不相信他们是这个问题。当我评论他们时,没有任何变化。
任何帮助将非常感谢。
感谢您的答复,我感谢帮助。 我尝试了你的建议,不幸的是程序执行的方式完全相同!我设置了scrollView的contentMode,并在我的设置结束时(在viewDidLoad()中)在imageView上调用了setNeedsDisplay。 – AlexFZ 2011-02-09 19:16:19
我不会那么用IB,主要是因为这样的问题。您可以尝试以编程方式构建视图。这可能会消除差异/问题。 – Rayfleck 2011-02-10 01:52:15