У меня есть два наложенных изображения, которые я хочу показать на виде камеры в зависимости от ориентации устройства - одно для горизонтальной и одно для вертикальной ориентации (overlay_v.png и overlay_h.png).Когда устройство поворачивается из вертикальной в вертикальную ориентацию, изображение наложения также должно меняться.
С beginGeneratingDeviceOrientationNotifications я могу только определить ориентацию устройства, но не могу изменить наложение изображений.Любая помощь / другой подход будет очень признателен.
- (IBAction) getPhoto:(id) sender {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
if((UIButton *) sender == choosePhotoBtn) {
sourceCamera = false;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
} else {
sourceCamera = true;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
//overlay image (cannot dynamically switch from vertical to horizontal in here)
UIImageView *anImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"overlay_v.png"]];
anImageView.frame = CGRectMake(0, 0, anImageView.image.size.width, anImageView.image.size.height);
picker.cameraOverlayView = anImageView;
//device orientation check
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didOrientation:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
[anImageView release];
}
[self presentModalViewController:picker animated:YES];
}
- (void) didOrientation: (id)object {
UIInterfaceOrientation interfaceOrientation = [[object object] orientation];
if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
NSLog(@"portrait");
} else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft ){
NSLog(@"landscape");
}
}