- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前有一个名为 Page2
的 UiViewController现在,如果将 Iphone 的方向更改为横向,则会调用以下方法,这非常好
-(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
/*The orientation of the phone just changed*/
}
现在我的问题是,如果用户已经在 ViewController page1 中处于横向模式并转到 UIViewController Page2
,则不会调用上述方法。我知道我可以使用以下代码检查手机的当前方向
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if(orientation == UIInterfaceOrientationLandscapeLeft)
{
//Its in landscape mode
}
但是我不知道将什么参数传递给方法的大小(只有当方向改变时才会自动调用)如果我在横向模式下检测到它,我想手动调用这个方法。关于如何获取当前大小以传递给下面的方法的任何建议,其中宽度将大于高度(因为它处于横向模式)
-(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator ;
我试过这样做
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{
[self viewWillTransitionToSize:self.view.frame.size withTransitionCoordinator:nil];
}
但是高度大于宽度表明它仍处于纵向模式......我做错了什么?如何手动调用此方法并传递宽度大于高度的当前尺寸?
更新:
我想多介绍一点背景。我目前有两个 UIViewControllers PageOne
和 PageTwo
。现在 PageTwo
中有类似这样的东西用于方向控制。控制流从 PageOne
到 PageTwo
//When device rotates
-(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
DKTuner* sensitivityTuner;
if (size.width > size.height)
{ //Yes this is the landscape mode - Realign some controls to a different position.
.....
}
else
{
// this is portrait mode
.....
}
}
现在我在 PageTwo
中的代码逻辑假定用户以纵向模式输入它。然而在现实中,这并不总是正确的,因为用户可以在 LandscapeMode 中输入 pageTwo
。在那种情况下,控件不会重新调整为横向模式,因为在 pageTwo 中不会调用重新定向的方法。我的问题是如何手动调用重定向方法 viewWillTransitionToSize
并传递一个尺寸宽度大于高度的尺寸参数?
最佳答案
无论您在 viewWillTransitionToSize:withTransitionCoordinator:
中做什么,您都应该在 viewWillLayoutSubviews
或 viewDidLayoutSubviews
中执行。当 View Controller 的 View 首次出现在屏幕上时,它们会在旋转时发送和,并且 UIKit 在调用 viewWillLayoutSubviews
之前更新 View 的框架。
关于ios - 调用 viewWillTransitionToSize : manually,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30114957/
我正在使用 viewWillTransitionToSize 来检测设备何时旋转到横向。根据目标大小,我可以检测是否朝向风景并根据需要调整我的特征... override func viewWillT
在我的 ios8 扩展 ActionViewController(UIViewController 的子类)中 viewWillTransitionToSize:withTransitionCoord
我想检测不同 ViewController 中的方向变化。我使用了这段代码 override func viewWillTransitionToSize(size: CGSize, withTrans
我读过帖子说 didRotate(fromInterfaceOrientation is deprecated and advising using viewWillTransitionToSize.
我的 swift 3 代码中有这个方法: func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinat
我正在开发一个针对 iOS 8.0+ 的应用程序,使用 Swift 2.2 和 Realm 1.0.2 作为我的数据存储。 我在崩溃日志中看到很多与此代码相关的崩溃,尽管我目前无法自己重现它们: //
尝试了新的旋转方法,我需要知道设备是否正在旋转,以便推迟和取消旋转时不需要的操作。 -(void)viewWillTransitionToSize:(CGSize)size withTransitio
我目前有一个名为 Page2 的 UiViewController现在,如果将 Iphone 的方向更改为横向,则会调用以下方法,这非常好 -(void) viewWillTransition
我正在为 iPad Air 2 和 iPad Mini 4 实现分屏功能。我正在尝试检测分屏大小何时发生变化。当作为主应用程序运行时,viewWillTransitionToSize 或 willTr
iOS 8 带来了两种处理屏幕旋转的新方法。 ViewWillTransitionToSize 和 willTransitionToTraitCollection。 我的问题是,如何停止这些方法中的轮
谁能解释这两种方法之间的区别? The docs for UIViewController明确声明 viewWillTransitionToSize 应该用于管理旋转,但点击进入 UIContentC
我试图通过覆盖响应 iPad 上的旋转 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)c
我有一个 View Controller ,在两个嵌套 View 中有一个 View 层次结构,这些嵌套 View 放置有自动布局约束。然后我在代码中将一些 UIView 放入其中一个 View 中,
我正在使用 viewWillLayoutSubviews 来检测方向变化,但由于在 iOS 8 和 Xcode 6 中已弃用,我需要使用新的 viewWillTransitionToSize。我的问题
当我旋转设备时,我正在使用 viewWillTransitionToSize 来调整我的滑出菜单,但它似乎在 Swift 3 中被破坏了?谁能帮我解决这个问题?我的代码如下所示: func viewW
我尝试用 3 个页面创建 UIPageVC。一切都很好,但是当我旋转设备并在此更改页面之后,我将看到仅旋转页面,该页面在旋转时刻在 PageVC 中解决。 当我旋转任何页面时,如何旋转其他 2 个 V
很多人都讨论过模仿原生 iOS 相机应用程序的技术(其中 UI 元素随着设备旋转而原地旋转)。其实我之前问过一个问题here .大多数人让您锁定 UI 的方向,然后仅对您想要旋转的元素强制进行转换。这
viewWillTransitionToSize 方法在设备方向上被调用。问题是这是在所有 View Controller 上调用的。如果 View Controller A 使用 push segu
我有一个 UICollectionView,它由弹出窗口显示。 UICollectionView 包含 16 行,每行 10 个单元格,我希望这些单元格填满 UICollectionView 的宽度。
将我的 xcode 更新到 xcode9 后,我收到了一个已弃用警告列表,但我不知道如何修复它 “willRotateToInterfaceOrientation:duration:”已弃用:首先在
我是一名优秀的程序员,十分优秀!