iPhone - 防止图像旋转到其UIImageView中

时间:2011-04-14 23:00:25

标签: iphone uiimageview camera rotation image

我有一个用于覆盖cameraPicker的UIView。在这个视图中,我有一个ImageView,我把相机拍摄的图像(图像属性)放入其中。

当iPhone处于水平位置拍摄照片时,图像会旋转到ImageView中。这很糟糕,因为用户没有看到拍摄的照片。

我已将这些代码行放入管理覆盖视图(文件所有者)的ViewController中:

- (void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    NSLog(@"didAnimateFirstHalfOfRotationToInterfaceOrientation");
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    NSLog(@"didRotateFromInterfaceOrientation");
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    NSLog(@"shouldAutorotateToInterfaceOrientation");
    return YES;
}

- (void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    NSLog(@"willAnimateFirstHalfOfRotationToInterfaceOrientation");
}

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
    NSLog(@"willAnimateRotationToInterfaceOrientation");
}

- (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration
{
    NSLog(@"willAnimateSecondHalfOfRotationFromInterfaceOrientation");
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    NSLog(@"willRotateToInterfaceOrientation");
}

即使我在shouldAutorotateToInterfaceOrientation中返回YES或NO,也没有其他日志项写入控制台。

我真的不介意这一点,但这是一个线索。我最后的愿望是避免图像旋转到其图像视图。我怎么能这样做?

请考虑一下我们正在讨论的相机覆盖,你可以采用与普通视图不同的方式做出反应。

1 个答案:

答案 0 :(得分:4)

你有正确的概念,但方法错误。当前设备方向不会影响UIImage放置在UIImageView内时的行为方式。如果要修改此行为,则需要在图像本身上指定UIImageOrientation,如:

UIImage* rotatedImage = [UIImage imageWithCGImage:myImage.CGImage scale:1.0 orientation:UIImageOrientationLeft];
myImageView.image = rotatedImage;

请注意,您可能不想使用UIImageOrientationLeft,例如。您需要根据拍摄照片的方向和(可能)当前的设备方向选择能够为您提供所需最终结果的方向。