4

我有一个问题,我需要旋转 UIImageView 并根据它是纵向模式还是横向模式调整大小。

我已经设法让图像视图正确旋转,正如这个相关问题中的答案所说:Rotate UIImageView Based on iPhone Orientation

这是我的旋转代码(现在我只专注于将其旋转到左横向):

- (void)rotateImage:(UIImageView *)image duration:(NSTimeInterval)duration 
          curve:(int)curve degrees:(CGFloat)degrees
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:duration];
    [UIView setAnimationCurve:curve];
    [UIView setAnimationBeginsFromCurrentState:YES];

    float angle = DEGREES_TO_RADIANS(degrees);    
    CGAffineTransform transform = CGAffineTransformRotate(
                        CGAffineTransformMakeTranslation(
                                                         160.0f-self.view.center.x,
                                                         240.0f-self.view.center.y
                                                         ),angle);
    image.transform = transform;
    [UIView commitAnimations];
}

我如何启动 UIImageView:

UIImage *image = [UIImage imageNamed:@"picture.png"];
self.testImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];
self.testImageView.image = image;
self.testImageView.contentMode = UIViewContentModeScaleAspectFit;
self.testImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

现在发生的事情是图像被旋转但与横向模式下的纵向模式大小相同,但居中(我明白为什么,因为我将旋转作为链接问题的答案)。

所以,我想要的是全屏查看图像,因为原始图像具有适合全屏横向的比例。正如我设置的

UIViewContentModeScaleAspectFit

我最初的天真认为这会神奇地重新缩放以适应适当的景观比例。显然情况并非如此。有什么提示吗?

4

1 回答 1

-1

尝试使用 UIViewContentModeScaleAspectFit 并将您的父视图属性 autoresizesSubviews 设置为 YES。图像应自动调整大小。

于 2012-04-27T07:29:06.863 回答