UIImageView以编程方式将方向更改为横向模式

时间:2012-04-26 17:51:45

标签: objective-c ios uiimageview orientation landscape-portrait

我有一个问题,我需要旋转UIImageView并调整大小,具体取决于它是Portraite模式还是Landscape模式。

我设法让图片视图正确旋转,因为这个相关问题的答案如下:Rotate UIImageView Depending 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

我最初的天真认为这会神奇地重新缩放以适应适当的景观尺度。显然情况并非如此。任何提示?

1 个答案:

答案 0 :(得分:-1)

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