使用以下定位方法时:
overrIDe func shouldautorotate() -> Bool { return true}overrIDe func supportedInterfaceOrIEntations() -> UIInterfaceOrIEntationMask { if self.orIEntation == .Landscape { return UIInterfaceOrIEntationMask.LandscapeRight } else { return UIInterfaceOrIEntationMask.Portrait }}overrIDe func preferredInterfaceOrIEntationForPresentation() -> UIInterfaceOrIEntation { if self.orIEntation == .Landscape { return UIInterfaceOrIEntation.LandscapeRight } else { return UIInterfaceOrIEntation.Portrait }}
我可以在启动时正确设置旋转.通过更改方向值并调用UIVIEwController.attemptRotationToDeviceOrIEntation(),我能够支持旋转到新的所需接口.但是,此旋转仅在用户实际移动其设备时发生.我需要它自动发生.
我可以调用:UIDevice.currentDevice().setValue(targetorIEntation.rawValue,forKey:“orIEntation”)来强制更改,但这会导致其他副作用,因为UIDevice.currentDevice().orIEntation只返回从该点开始的setValue上. (而且非常脏)
有什么我想念的吗?我已经研究过关闭并启动一个新的视图控制器,但这有其他问题,例如在解除时立即出现UI故障并立即呈现新的视图控制器.
编辑:
以下方法对我不起作用:
> Trick preferredInterfaceOrientationForPresentation to fire on viewController change
> Forcing UIInterfaceOrientation changes on iPhone
编辑2:
对潜在解决方案的思考
>直接设置方向(使用setValue)并处理iOS 9上出现的所有副作用(不可接受)
>我可以使用当前解决方案并指示用户需要旋转设备.设备物理旋转后,UI会旋转,然后正确锁定到位. (差的UI)
>我可以找到一种强制刷新方向并在没有物理 *** 作的情况下旋转的解决方案. (我在问什么,并寻找)
>手工完成所有工作.我可以纵向或横向锁定界面,并手动旋转和调整容器视图的大小.这是“脏”的,因为它放弃了所有大小类自动布局功能,并导致更重的代码.我试图避免这种情况.
我首先将项目支持的旋转设置为我希望支持的所有内容,然后覆盖相同的UIVIEwController方法:
-(BOol)shouldautorotate { return TRUE; }-(NSUInteger)supportedInterfaceOrIEntations { return UIInterfaceOrIEntationMaskPortrait;}
这允许设备旋转但在纵向模式下将保持不变.然后开始观察设备旋转:
[[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(adjustForRotation:) name:UIDeviceOrIEntationDIDChangeNotification object:nil];
如果设备处于纵向模式或横向,则更新UI:
-(voID)adjustForRotation:(NSNotification*)notification{ UIDeviceOrIEntation orIEntation = [[UIDevice currentDevice] orIEntation]; switch (orIEntation) { case UIDeviceOrIEntationLandscapeleft: { // UPDATE UI } break; case UIDeviceOrIEntationLandscapeRight: { // UPDATE UI } break; default: // All other orIEntations - Portrait,UpsIDe Down,UnkNown { // UPDATE UI } break; }}
最后,GPUImage根据设备的方向渲染图像.
[_gpuImageStillCamera capturePhotoAsImageProcessedUpToFilter:last_f withCompletionHandler:^(UIImage *processedImage,NSError *error) { // Process the processedImage }];总结
以上是内存溢出为你收集整理的iOS 9中的强制视图控制器方向全部内容,希望文章能够帮你解决iOS 9中的强制视图控制器方向所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)