自定义带有标题视图的导航栏
我正在尝试在导航栏的中心添加自定义视图,并使用以下代码来测试它:
UIView * testView = [[UIView alloc] init];
[testView setBackgroundColor:[UIColor blackColor]];
testView.frame = CGRectMake(0, 0, 100, 35);
[self.navigationController.navigationItem.titleView addSubview:testView];
我在视图控制器的 viewDidLoad 方法中进行设置,但是当我运行程序时 我的导航栏中似乎没有任何变化。
你能帮我解决这个问题吗?
I am trying to add a custom view in the center of a navigation bar and I am using the following code to test it:
UIView * testView = [[UIView alloc] init];
[testView setBackgroundColor:[UIColor blackColor]];
testView.frame = CGRectMake(0, 0, 100, 35);
[self.navigationController.navigationItem.titleView addSubview:testView];
I am setting this up in the viewDidLoad method of my view controller but when i run my program
nothing seems to change in my navigation bar.
Could you help me with this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
这有效。初始化时给出框架
This works. Give frame at the time of initialisation
如果您只想为一个视图控制器自定义标题,则可以使用
,或者如果您想为所有视图控制器自定义标题,请使用
If you want to just customize the title for one view controller you can use
or if you want to customize for all view controllers use
替换
为
编辑:
注意:您不能向 titleView 添加子视图,因为它的默认值为
nil
,您需要设置一个新视图作为 titleView。Replace
to
Edit:
Note: You cannot add subviews to titleView cause it's default value is
nil
, you need to set a new view as the titleView.Swift 3/4
您可以将
UILabel
设置为titleView
。在viewDidLoad()
中调用:注意
navigationItem.title = nil
,否则title
可能会覆盖titleView
。Swift 3/4
You may set i.e.
UILabel
as atitleView
. Call it inviewDidLoad()
:Note
navigationItem.title = nil
, otherwisetitle
may overridetitleView
.您需要使用 Storyboard 来执行此操作以支持 iPhone 6 和更新(更大)的设备。
为自定义导航项标题/副标题等创建一个容器视图,并将其拖到可视化编辑器中(而不是拖到视图层次结构中)。
You'll want to use storyboard to do this to support iPhone 6 and newer (larger) devices.
Create a container view for your custom navigation item title/subtitle etc, and drag it into the visual editor (not into the view hierarchy).
Swift 3
另一种替代解决方案
viewDidLoad
来设置您的titleView
我建议使用
Swift 3
One more alternate solution is
I recommend to use,
viewDidLoad
to setup yourtitleView