我想在这里实现的只是在两个方向上将图像宽度适合屏幕,并使用UIScrollView只允许垂直滚动以查看整个图像。适当填充大于屏幕的图像
viewController和view都以实用的方式创建。
加载的图像在宽度和高度上均大于屏幕。
这里是我的viewController相关代码:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
- (void)loadView {
UIScreen *screen = [UIScreen mainScreen];
CGRect rect = [screen applicationFrame];
self.view = [[UIView alloc] initWithFrame:rect];
self.view.contentMode = UIViewContentModeScaleAspectFill;
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
UIImage *img=[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]];
UIImageView *imgView =[[UIImageView alloc] initWithImage:img];
[img release];
imgView.contentMode = UIViewContentModeScaleAspectFill;
imgView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:imgView];
[imgView release];
}
尝试了上述两种contentMode所有组合,没有给我正确的结果。
我现在得到的最接近:我手动调整imgView在loadView中的大小,纵向模式会正确显示,因为应用总是以纵向模式开始,但在横向模式下,宽度适合正确,但图像垂直居中而不是顶部对齐。
如果我将imgView添加到scrollView,在横向模式下它看起来像contentSize未设置为完整图像大小。但是当我滚动反弹时,我可以看到图像全尺寸。
问题:
为什么我需要手动调整呢?
在景观模式中我和'我'可以'移动'imgView,所以imgView.frame.origin是(0,0)和正常工作与滚动视图?
谢谢!
更新: 我加了: imgView.clipsToBounds = YES;
在横向模式下找出图像边界比屏幕高度小。
所以问题变成如何让图像视图保持原始比率(从而显示完整图像总是)时旋转到风景?我是否需要在轮换后再手动调整它的大小?
我做到了这一点,仍然存在问题。上面的代码没有滚动,并且图像在横向上无法正确显示。 – madcat 2010-12-24 00:12:34