gpt4 book ai didi

iphone - 自定义相机旋转问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:54 25 4
gpt4 key购买 nike

我有一个自定义相机叠加层,与所有相机 View 一样,默认为横向模式。我有一些方向更改逻辑可以检测方向何时更改,因此我可以旋转我放置的按钮和 View 。此外,我还编辑了 shouldAutoRotateInterfaceTo 方法,使其在相机开启时不旋转:

- (BOOL)shouldAutorotateToInterfaceOrientation
(UIInterfaceOrientation)interfaceOrientation {
if (cameraIsOn) {
return NO;
}
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

问题:当我将相机倾斜到横向时,相机 View 仍然旋转到纵向模式。这会导致设备处于横向位置,而 View 处于纵向,并跑出屏幕。

如果有帮助,下面是我用来检测方向变化和转换按钮的方法:

- (void)cameraOrientationChanged  {
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
CGAffineTransform transform;
switch (orientation) {
case UIDeviceOrientationPortrait:
transform = CGAffineTransformIdentity;
self.rotatePrompt.hidden = NO;
break;
case UIDeviceOrientationPortraitUpsideDown:
//transform = CGAffineTransformMakeRotation(180*M_PI/180);
transform = CGAffineTransformIdentity;
self.rotatePrompt.hidden = NO;
break;
case UIDeviceOrientationLandscapeLeft:
//transform = CGAffineTransformMakeRotation(90*M_PI/180);
self.rotatePrompt.hidden = YES;
transform = CGAffineTransformIdentity;
break;
case UIDeviceOrientationLandscapeRight:
//transform = CGAffineTransformMakeRotation(-90.0*M_PI/180);
transform = CGAffineTransformMakeRotation(180*M_PI/180);
self.rotatePrompt.hidden = YES;
break;
default:
transform = CGAffineTransformIdentity;
break;
}
self.shootButton.transform = transform;
self.cameraTypeButton.transform = transform;
self.photoLibraryButton.transform = transform;
self.changeCameraDirectionButton.transform = transform;
self.flashButton.transform = transform;
self.videoTimerLabel.transform = transform;
self.closeCameraButton.transform = transform;

注意 在我升级到 iOS 5 之前这似乎工作正常。

更多信息通过查看我的 Xib 文件,我可以看到我在纵向模式下创建了叠加层。当相机覆盖层旋转时,它会进入人像模式,而设备则处于横向位置。

更奇怪的是,每当这种情况发生时(并不总是发生),我注意到 shouldAutorotateToInderfaceOrientation 没有在 View Controller 中被调用。我敢打赌这与这里的问题有关。

最佳答案

问题出在我的导航 Controller 设置上。 UIImagePickerController 将旋转消息发送到 Root View Controller 的 shouldAutoRotateToInterface: 方法。但是,由于我从一个旧项目 (iOS 3) 复制了该类,因此它没有自动复制 shouldAutoRotateToInterface: 方法。现在我在我的 Root View Controller 中编写了该方法,旋转问题已解决。

关于iphone - 自定义相机旋转问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8039383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com