- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的导航栏
现在我知道如何使用此代码在 leftBarButtonItem
上添加 customView
navigationItem.leftBarButtonItem!.customView = someCustomView
如我的屏幕截图所示
但问题是,有没有一种方法可以检测到我的 leftBarButtonItem
旁边是否有任何 navigationItem
,以便我可以将宽度设置为动态?而不是像屏幕截图那样重叠?
这是我的测试用例的更多屏幕截图
注意:是的,我知道如何使用代码someCustomView.frame = CGRect(.....)
设置框架,而且似乎 UINavigationBar/Item继承自NSObject而不是UIView
编辑:显然,在进行了大量编码、重新编码和研究之后,UINavigationBar
/UINavigationItem
中唯一能够自动调整自身大小的部分根据左和右 barButtons
是 titleView
这在某种程度上很糟糕。
是通过使用 UINavigationItem
的 titleView
属性来实现的,但这不能回答我的问题。
最佳答案
如果-希望-这些是正在寻找的输出:
那么你应该设置titleView导航项:
A custom view displayed in the center of the navigation bar when the receiver is the top item.
它动态处理宽度以使其不重叠。
例如,在下面的代码片段中,我将把 navigationItem.titleView
的值设置为 UILabel(当然你可以自定义它):
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 40))
label.text = "Some very long text that should be in the middle of the navigation bar"
label.textAlignment = .center
label.textColor = UIColor.blue
navigationItem.titleView = label
}
输出应与上面的屏幕截图类似。
请注意,屏幕截图中出现的“Item 01”、“Item 02”和“Item 03”直接添加到 Storyboard,没有与添加它们相关的代码。
如果您想让标签位于“Item 01”按钮的旁边,只需让它:
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 40))
label.text = "my label"
label.textAlignment = .left
label.textColor = UIColor.blue
navigationItem.titleView = label
输出应该是这样的:
希望这有帮助。
关于ios - UINavigationItem barButtonItem customView 检测其他项目然后设置宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41013462/
在我的 UINavigationController 中,我推送三个 UITableViewController。在我的第二个 UITableViewController 中,我在 viewDidLo
我有一个 navigationItem 的子类,因为我想更改导航标题标签的文本、字体、颜色等。 我的 customNavigationItem.h 有以下内容: @interface CustomNa
我被难住了。我正在使用 UINavigationController,在一个 View 上我试图隐藏后退按钮。但是当我这样做时,它也会隐藏下一级 View 上的后退按钮。 在 - (void)view
我想用一个 navItem.rightBarButtonItem 加载 View Controller ,并根据一组情况将其更改为另一个。似乎我只能在 viewDidLoad 上加载它一次。更改图标后
我有一个 UINavigationItem(不是 UINavigationBar),我想使其透明或不透明。这是在我建立从导航 Controller 到我的 UIViewController 子类的关系
我创建了一个带有菜单结构的应用程序,并希望在初始化第一个 ViewController 之前拥有一个 DownloadViewController。 因此我在 DownloadViewControll
尝试修改 UINavigationItem 中的标题 // this modify the title self.navigationItem.title = @"Any title"; //
我正在尝试为 UINavigationItem 创建自定义动画。我有包含 4 个项目的导航栏,但是当我向下滚动时,我想将搜索栏放在导航中。我想要动画自下而上,但我尝试的一切都不起作用。 以下是我尝试过
我有一个自定义的 UITextField 添加到 UINavigationItem.titleView。但它不是becomeFirstResponder。为什么会这样? - (void) viewDi
我正在使用此代码在 UINavigationItem 中设置自定义图像: let button = UIButton(type: .system) button.frame = CGRect(orig
当我点击导航栏的标题时,有什么好方法可以让弹出窗口(特别是日期选择器)出现?我实际上使用的是 xcode6/swift,但假设 ios7 解决方案就足够了! 非常感谢! 最佳答案 您可以将按钮设置为标
谁能解释为什么有两个 navigationItems?当我像下面这样登录时: NSLog(@"%@", self.navigationItem); NSLog(@"%@", self.navigati
我找遍了,似乎无法弄清楚。我相信很多人都会有我的链接,我很可能已经看过了。但如果有人可以请给我看代码来执行以下操作: 我想在我的 UINavigationBar 中有一个左箭头作为“返回”UINavi
我遇到了一个问题,当我将项目推到导航 Controller 上时,后退按钮只显示“后退”。我尝试设置一个断点并检查堆栈上的导航项。堆栈中的所有项目都有一个 nil backButtonItem 和一个
我有两个字符串构建的文本:A(乙) 我想使用这两个字符串作为 UINavigationItem 的标题,但在截断的情况下,我只希望截断 A 而不是截断 B。 例子:我想要的标题是“The quick
我有一个 iPad 应用程序,在其中一个屏幕上我有一个 UIToolbar设置为 titleView的 viewController的 navigationItem .我还有一个 left-和一个 r
我正在使用基于 UIImageView 的动画来显示自定义事件指示器。以下代码负责设置: + (void)startLoadingActivity:(UIViewController *)vc {
我无法解决 UINavigationItem 上的提示问题... 我有一个主视图 Controller 和一个细节 View Controller 。当我从 master 推送到细节时,细节 View
我在 Xcode 5 的“默认导航 Controller ”中添加了几个 View Controller 。我想更改栏的颜色,但它不起作用。这是我使用的代码: [[UINavigationBar ap
如何在导航项中添加新按钮?假设我需要将其添加到右侧按钮附近。 用于左右的代码。 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem al
我是一名优秀的程序员,十分优秀!