2009-12-29 1 views
4

Я использую UIImagePicker для доступа к камере на своем iPhone-приложении. Я бы хотел иметь два разных наложения для imagepicker, в зависимости от ориентации iPhone. Можно ли сделать это? Похоже, если я поместил следующий класс в класс, который владеет UIImagePickerController, он вообще не будет вызван, а в любом из uiviewcontroller выше, он будет вызван только после того, как UIImagePickerController не будет активен.UIImagePickerController overlay autorotate

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

Любая идея, как добиться желаемого эффекта?

ответ

3

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

Если вы используете presentModalViewController: анимированный для отображения imagepicker, то я считаю, что только модальный контроллер получит сообщения типа shouldAutorotateToInterfaceOrientation.

Обычно вы можете подклассифицировать UIImagePickerController для переопределения соответствующих методов, но похоже, что подкласс также не поддерживается.

Я подозреваю, что вам нужно будет использовать UIAccelerometer и выполнять ручное вращение зрения на вашем оверлейном представлении в ответ на сообщения ускорения.

Edit:

На самом деле, попробуйте использовать [NSNotificationCenter addObserver: для UIDeviceOrientationDidChangeNotification.

+0

Предлагаю вам попробовать, что предлагает Nimrod в конце: [NSNotificationCenter addObserver: для UIDeviceOrientationDidChangeNotification. Я сделал это и применил свою собственную 90-градусную Аффинную трансформацию к нескольким кнопкам и меток, а затем, когда ImagePicker уволен, используйте ориентацию устройства, чтобы угадать ориентацию, предназначенную пользователю для изображения. Это хаки, но это работает, и я не думаю, что это оскорбляет Apple. Но это не настоящая AutoRotation. –

+0

или, лучше, чем угадать предполагаемое вращение, используйте myimage.imageOrientation. –

0

Фактически, используя данные необработанного акселерометра, вы можете определить, когда менять обложку, чтобы это произошло!

0

Вы можете вращать вид наложения, используя преобразование свойство наложения как этот

cameraOverlayView.transform = CGAffineTransformMakeRotation (-3,141592/2);

 Смежные вопросы

  • Нет связанных вопросов^_^