【问题标题】:UINavigationItem barButtonItem customView detecting other items then setting widthUINavigationItem barButtonItem customView 检测其他项目然后设置宽度
【发布时间】:2016-12-07 09:15:36
【问题描述】:

这是我的导航栏

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

navigationItem.leftBarButtonItem!.customView = someCustomView

如我的截图所示

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

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

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

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

所以据我所知,实现这一目标的唯一方法是:

是通过使用 UINavigationItemtitleView 属性,它不能回答我的问题。

【问题讨论】:

    标签: ios swift xcode uinavigationitem


    【解决方案1】:

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

    那么你应该设置navigationItem的titleView

    当导航栏的中心显示一个自定义视图 接收器是最重要的。

    动态处理宽度不重叠。

    例如,在下面的代码sn-p中,我将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”是直接添加到故事板,没有与添加它们相关的代码。

    如果您想让标签位于“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
    

    输出应该是这样的:

    希望这会有所帮助。

    【讨论】:

    • 是的,我也想过这个问题,但 titleViews 的问题是它是 centered 而不是 leftAligned
    • @ZonilyJame 好吧,如果您想将其设置为 UILabel(在您的情况下应该如此),请检查我的编辑。
    • 我也做了那个兄弟,谢谢你的努力,但我在这里寻找的是检测NavBar中的项目,然后相应地设置宽度。就像 NavigationBar Title 如何自动截断自己一样,我正在寻找一种方法来复制这种行为,在这种情况下,对于 UINavigationItem
    • 我也可以隐藏 navigationBar 并为自己添加一个看起来像 navigationBarcustomView,但我不想偏离框架。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多