我有一个支持方向更改的iPad应用程序的嵌套视图层次结构.它看起来与以下类似.
UIViewController
UIView
- UIView
- UIImageView (disable rotation)
- UIImageView
- UIView (disable rotation)
- UIView
- UIView
...
Run Code Online (Sandbox Code Playgroud)
我想锁定一些子视图的方向,同时允许其他人自动旋转和调整大小.我似乎无法弄清楚如何实现这一目标.
一种方法似乎是手动旋转子视图willAnimateRotationToInterfaceOrientation:.鉴于SDK正在执行我将要撤消的轮换,这并不是特别有吸引力.
有没有办法简单地禁用子视图的方向更改或其他方法来重构我的层次结构?
我正在尝试旋转一个视图,而所有其他视图(5)都固定为纵向.原因是在一个视图中我希望用户观看他之前保存的图片.我想这是可能的,但到目前为止我无法弄清楚如何实现这一目标.任何人都可以帮忙或给我一个暗示吗?我正在使用在iOS8上运行的Swift编程
我的应用程序支持除PortraitUpsideDown之外的所有方向.在我的视图层次结构中,我有一个AVCaptureVideoPreviewLayer作为顶视图中的子图层,即UIImageView.然后在视图层次结构下面是几个显示控件的叠加视图.
叠加视图在方向更改时正常工作,但我不知道如何使用此AVCaptureVideoPreviewLayer.我希望它的行为类似于Camera应用程序,以便previewLayer保持静止并且控件可以平滑地重新组织.现在,由于主视图在方向更改时旋转,我的预览图层也会旋转,这意味着在横向视图中它保持纵向视图,仅占用屏幕的一部分,相机的图片也旋转90度.我已设法手动旋转预览图层,但之后它有这个方向更改动画,这导致在动画期间看到背景一段时间.
那么在使previewLayer保持静止的同时自动旋转控件的正确方法是什么?
我正在编写一个绘图应用程序,我不希望绘图视图旋转.同时,我希望其他控件可以很好地旋转,具体取决于设备的方向.在iOS 7中,我通过以下方式解决了这个问题:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
float rotation;
if (toInterfaceOrientation==UIInterfaceOrientationPortrait) {
rotation = 0;
}
else if (toInterfaceOrientation==UIInterfaceOrientationLandscapeLeft) {
rotation = M_PI/2;
} else if (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight) {
rotation = -M_PI/2;
}
self.drawingView.transform = CGAffineTransformMakeRotation(rotation);
self.drawingView.frame = self.view.frame;
}
Run Code Online (Sandbox Code Playgroud)
但是在iOS 8上,即使调用该函数并正确设置了转换,它也不会阻止视图旋转.
我已经尝试创建一个视图控制器,它只是阻止它的视图旋转并将它的视图添加到视图层次结构,但它不响应用户输入.
有任何想法吗?
谢谢!
ios ×4
autorotate ×2
objective-c ×2
orientation ×2
ipad ×1
preview ×1
rotation ×1
swift ×1
uiview ×1
xcode ×1