2010-08-24 68 views
0

我有一个内部有UIImage的UIScrollView。下面的代码可以正确初始化图像(它的宽度是一样的滚动视图的宽度):如何在设备旋转上处理UIImage

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    ... 

    imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"map1.jpg"]]; 
    imageView.userInteractionEnabled = YES; 
    imageView.autoresizingMask = (UIViewAutoresizingFlexibleWidth); 
    [imageScrollView addSubview:imageView]; 

    imageScrollView.contentSize = [imageView frame].size; 

    ... 

    // calculate minimum scale to perfectly fit image width, and begin at that scale 
    float minimumScale = [imageScrollView frame].size.width/[imageView frame].size.width; 
    //imageScrollView.maximumZoomScale = 1.0; 
    imageScrollView.minimumZoomScale = minimumScale; 
    imageScrollView.zoomScale = minimumScale; 
} 

我想要做的是设置尺寸完全适合(如上)的装置转动时。这里就是我试图做的事:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { 
    float newScale = [imageScrollView frame].size.width/[imageView frame].size.width; 
    imageScrollView.zoomScale = newScale; 
} 

由于种种原因,这并不在所有的工作。我能够做到这一点的唯一方法是初始化另一个UIImage,并再次执行所有初始化过程,这对我来说并不合适。

回答

0

也许你应该改变.contentSize的滚动视图。

+0

这似乎并不幸运。我认为问题是与UIImageView,而不是UIScrollView。 – 2010-08-24 09:14:02

+0

好的,请描述你在旋转后在屏幕上看到什么,即UIImage的大小是什么等等? – 2010-08-24 09:23:29

+0

图像被放大(方式比需要更多) – 2010-08-24 12:42:44