我有一个用于覆盖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,也没有其他日志项写入控制台。
我真的不介意这一点,但这是一个线索。我最后的愿望是避免图像旋转到其图像视图。我怎么能这样做?
请考虑一下我们正在讨论的相机覆盖,你可以采用与普通视图不同的方式做出反应。
答案 0 :(得分:4)
你有正确的概念,但方法错误。当前设备方向不会影响UIImage
放置在UIImageView
内时的行为方式。如果要修改此行为,则需要在图像本身上指定UIImageOrientation
,如:
UIImage* rotatedImage = [UIImage imageWithCGImage:myImage.CGImage scale:1.0 orientation:UIImageOrientationLeft];
myImageView.image = rotatedImage;
请注意,您可能不想使用UIImageOrientationLeft
,例如。您需要根据拍摄照片的方向和(可能)当前的设备方向选择能够为您提供所需最终结果的方向。