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】:一次只使用一个。
设置titleView
或navigationItem
,如下所示:
UILabel *lblTitle = [[UILabel alloc] init];
lblTitle.text = @"eqweqweq";
lblTitle.backgroundColor = [UIColor clearColor];
[lblTitle sizeToFit];
self.navigationItem.titleView = lblTitle;
或
直接设置title
的navigationItem
如下:
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 上不起作用