gpt4 book ai didi

ios - UINavigationItem barButtonItem customView 检测其他项目然后设置宽度

转载 作者:行者123 更新时间:2023-11-30 12:50:42 25 4
gpt4 key购买 nike

这是我的导航栏

enter image description here

现在我知道如何使用此代码在 leftBarButtonItem 上添加 customView

navigationItem.leftBarButtonItem!.customView = someCustomView

如我的屏幕截图所示

enter image description here

但问题是,有没有一种方法可以检测到我的 leftBarButtonItem 旁边是否有任何 navigationItem ,以便我可以将宽度设置为动态?而不是像屏幕截图那样重叠?

这是我的测试用例的更多屏幕截图

enter image description here

注意:是的,我知道如何使用代码someCustomView.frame = CGRect(.....)设置框架,而且似乎 UINavigationBar/Item继承自NSObject而不是UIView

编辑:显然,在进行了大量编码、重新编码和研究之后,UINavigationBar/UINavigationItem 中唯一能够自动调整自身大小的部分根据左和右 barButtonstitleView 这在某种程度上很糟糕。

据我所知,实现这一目标的唯一方法是: enter image description here

是通过使用 UINavigationItemtitleView 属性来实现的,但这不能回答我的问题。

最佳答案

如果-希望-这些是正在寻找的输出:

enter image description here

enter image description here

那么你应该设置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

输出应该是这样的:

enter image description here

希望这有帮助。

关于ios - UINavigationItem barButtonItem customView 检测其他项目然后设置宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41013462/

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