- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试为 GLKViewController 的子类获取可见绘图区域。在 iOS 7 中,我会确定方向,然后相应地调整 [UIScreen mainScreen].bounds.size。然后我会减去 navigationBar 和 statusBarFrame 的高度,瞧! - 我绘图区域的实际大小。
现在我正在尝试使用 viewWillTransitionToSize 更新 iOS 8,但是当我旋转设备时(我打开了 UIInterfaceOrientationMaskAll),传递的大小是错误的。事实上, View 的宽度是正确的,但高度不是(涉及导航栏和状态栏的高度)。
我在 SO 上看到了几个相关的问题,但没有真正解决这个问题,至少没有帮助我。
在我看来这并没有做任何有趣的事情,如果我错了请纠正我:
- (void)viewWillTransitionToSize : (CGSize) size
withTransitionCoordinator : (id<UIViewControllerTransitionCoordinator>) coordinator
{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
NSLog(@"size changed : orig(%f,%f) mainScreen(%f,%f)", size.width, size.height, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
[self updateViews:size];
}
过渡到横向的输出:
size changed : orig(568.000000,256.000000) mainScreen(320.000000,568.000000)
从 viewWillTransitionToSize 传递的高度似乎是:
320 - (2*32) = 256
然后下一个旋转到纵向:
size changed : orig(320.000000,536.000000) mainScreen(568.000000,320.000000)
从 viewWillTransitionToSize 传递的高度似乎是:
568 - 32 = 536
32 恰好是横向模式下导航栏的高度(如果这意味着什么的话)。
所以我的问题是:viewWillTransitionToSize 是如何获得这个大小的?它如何考虑根据方向改变大小或消失的额外条?最重要的是,它为什么使用这些不正确的高度?
最佳答案
查看 View 帧大小 viewWillTransitionToSize:withTransitionCoordinationar:
时,您可能会在更新之前获得帧。
最好在此方法中使用 animateAlongsideTransition:completion:
:
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[super viewWillTransitionToSize:size
withTransitionCoordinator:coordinator];
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
{
//update views here, e.g. calculate your view
}
completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
{
}];
}
关于ios - viewWillTransitionToSize 和错误的 navigationBar 和 statusBarFrame 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29242916/
我的主视图 Controller 调用 presentViewController 来显示配置屏幕。 配置屏幕上的按钮调用 presentViewController 以允许用户选择照片。 关闭第二个
我正在尝试为 GLKViewController 的子类获取可见绘图区域。在 iOS 7 中,我会确定方向,然后相应地调整 [UIScreen mainScreen].bounds.size。然后我会
我一直在使用下面的代码来获取状态栏的高度: [UIApplication sharedApplication].statusBarFrame.size.height 这在纵向模式下完美运行并返回预期值
我需要在我的自定义 iOS 共享扩展中获取状态栏和导航栏的高度,以便将我的 topHeaderView 和 shareMessageTableView 放在它的正下方。由于 UIApplication
这个问题在这里已经有了答案: In iOS13 the status bar background colour is different from the navigation bar in la
在 iPhone X 上,UIApplication.sharedApplication.statusBarFrame.size.height 为 20。如您所知,在 iphone X 上状态栏高度为
我是一名优秀的程序员,十分优秀!