gpt4 book ai didi

ios - UINavigationItem 提示问题

转载 作者:可可西里 更新时间:2023-11-01 03:31:43 28 4
gpt4 key购买 nike

我无法解决 UINavigationItem 上的提示问题...

我有一个主视图 Controller 和一个细节 View Controller 。当我从 master 推送到细节时,细节 View Controller 上会显示一个提示:

prompt

但是,当我弹回到主视图 Controller 时, View 没有调整大小并且窗口显示出来(窗口已被涂成红色):

window

这只发生在 iOS7 上,在 iOS6 上 View 按预期调整大小。

我尝试了一些方法,例如在 viewWillDisappearviewDidDisappear 中将提示设置为 nil,但似乎没有什么可以解决的。

如果我将导航 Controller 中的导航栏设置为半透明,它确实可以解决此问题 - 不幸的是,这不是一个选项。

我在这里创建了一个非常小的示例项目来演示这个问题:https://github.com/InsertWittyName/NavigationItemPrompt

在此先感谢您的帮助!

最佳答案

我能想到的一个解决方案是子类化master的UIView,实现viewDidMoveToSuperview来设置view的frame从导航栏的高度到 super View 结束。由于导航栏不是半透明的,因此您的工作更轻松,因为您不必考虑布局指南和内容插图。

有几点需要注意。推送和弹出时,系统将 View Controller 的 View 移动到动画的另一个父 View 中,然后将其返回到导航 Controller 的私有(private) View 层次结构。此外,当 View 超出 View 层次结构时, super View 变为 nil

这是一个示例实现:

@interface LNView : UIView

@end

@implementation LNView

- (void)viewDidMoveToSuperview
{
[super viewDidMoveToSuperview];

if(self.superview != nil)
{
CGRect rect = self.superview.bounds;

rect.origin.y += 44;
rect.size.height -= 44;

[self setFrame:rect];
}
}

@end

这不是一个完美的实现,因为它使用了导航栏高度的硬编码值,没有考虑可能的工具栏等。但是所有这些你都可以作为属性添加到这个 View 和 viewDidLoad,在开始进入 View 层次结构之前,根据您的需要设置参数。

关于ios - UINavigationItem 提示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22115821/

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