iPhone - предотвращение поворота изображения в его UIImageView - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть UIView, который используется для наложения CameraPicker.В этом виде у меня есть ImageView, в который я помещаю изображение (свойство изображения), снятое камерой.

Когда фотография сделана с iPhone в горизонтальном положении, изображение поворачивается в ImageView.Это плохо, потому что пользователь не видит изображение в том виде, в каком оно было снято.

Я поместил эти строки кода в ViewController, который управляет наложением View (владелец файла):

- (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, никакой другой элемент журнала не будет записан в консоль.

Я не против, но это подсказка.Мое последнее желание состоит в том, чтобы избежать поворота изображения в его изображение.Как я могу это сделать?

Пожалуйста, учтите в своем ответе, что речь идет о наложении камеры, которое может реагировать не так, как при обычном виде.

1 Ответ

4 голосов
/ 15 апреля 2011

У вас правильная концепция, но неправильный подход.Текущая ориентация устройства не влияет на поведение UIImage при помещении внутрь UIImageView.Если вы хотите изменить это поведение, то вам нужно указать UIImageOrientation на самом изображении, например:

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

Обратите внимание, что вы не можете использовать UIImageOrientationLeft, то есть только для примера,Вам нужно выбрать ориентацию, которая даст вам желаемый конечный результат, основываясь на ориентации, в которой было сделано изображение, и (возможно) текущей ориентации устройства.

...