navigationItem.TitleView 在 iOS 10 上不起作用

Posted

技术标签:

【中文标题】navigationItem.TitleView 在 iOS 10 上不起作用【英文标题】:navigationItem.TitleView not working on iOS 10 【发布时间】:2017-01-16 12:55:23 【问题描述】:

导航栏中的标题视图有问题。问题是当我将视图分配给titleView时它没有显示。我尝试使用navigationItem.title = @"eqweqweq";,但没有任何反应。

涉及的这个视图是由代码创建的,我不知道这是不是问题,因为我使用过的其他 ViewController 运行良好。

ios 10 中是否有我无法使用 titleView 的错误?有时有效,有时无效。

我在谷歌上搜索过,但没有任何帮助。希望有人能帮帮我T_T。

谢谢

【问题讨论】:

如果你设置了titleView,那么标题将不会被使用。您能否展示一些您正在做什么的代码? 【参考方案1】:

一次只使用一个。

设置titleViewnavigationItem,如下所示:

UILabel *lblTitle = [[UILabel alloc] init];
lblTitle.text = @"eqweqweq";
lblTitle.backgroundColor = [UIColor clearColor];

[lblTitle sizeToFit];

self.navigationItem.titleView = lblTitle;

直接设置titlenavigationItem 如下:

navigationItem.title=@"eqweqweq"

【讨论】:

【参考方案2】:

确保您设置大小自定义 titleView。例如在设置 titleView 之前使用 titleLabel.sizeToFit()

let titleLabel = UILabel()
titleLabel.attributedText = NSAttributedString(string: title, attributes: attributes)
titleLabel.sizeToFit()  // Important part
navigationItem.titleView = titleLabel

【讨论】:

【参考方案3】:

我终于解决了这个问题!

问题出在这个函数上:

extension UINavigationController
func applyWhiteEffect()
        var bounds = self.navigationBar.bounds
        let whiteView = UIView()
        bounds.origin.y = -20
        bounds.size.height = bounds.size.height + 20
        whiteView.frame = bounds
        whiteView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
        whiteView.userInteractionEnabled = false
        whiteView.backgroundColor = UIColor.whiteColor()
        whiteView.tag = 1000
        self.navigationBar.addSubview(whiteView)
        self.navigationBar.backgroundColor = UIColor.clearColor()
        self.navigationBar.sendSubviewToBack(whiteView)
    

这个函数应用了一个白色的视图,并且在 iOS 10 中出现了问题,所以我改成了这个:

func applyWhiteEffect()
        var bounds = self.navigationBar.bounds
        let whiteView = UIView()
        bounds.origin.y = -20
        bounds.size.height = 20
        whiteView.frame = bounds
        whiteView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
        whiteView.userInteractionEnabled = false
        whiteView.backgroundColor = UIColor.whiteColor()
        whiteView.tag = 1000
        self.navigationBar.addSubview(whiteView)
        self.navigationBar.backgroundColor = UIColor.whiteColor()
        self.navigationBar.sendSubviewToBack(whiteView)
    

将视图更改为仅覆盖状态栏和self.navigationBar.backgroundColor = UIColor.whiteColor()

谢谢大家帮助我:D

【讨论】:

【参考方案4】:

尝试在 viewWillApear 函数中设置 titleView。

【讨论】:

【参考方案5】:

请试试这个。它对我有用。

self.title = "eqweqweq"

希望对你有帮助。谢谢

【讨论】:

提问者想在titleView上实现一个视图

以上是关于navigationItem.TitleView 在 iOS 10 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为 navigationItem.titleView layoutSubviews 获取正确的边界

如何设置navigationItem.titleView 图片水平居中?

当我向 navigationItem 添加更多按钮时,如何使我的 navigationItem.titleView 居中?

navigationItem.TitleView 在 iOS 10 上不起作用

如何设置navigationItem titleView的按钮?

无法定位自定义navigationItem titleView