首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取UINavigationBar的默认UINavigationBar

获取UINavigationBar的默认UINavigationBar
EN

Stack Overflow用户
提问于 2013-11-26 07:31:53
回答 1查看 1.1K关注 0票数 3

我想为我的应用程序中的导航栏使用一个自定义的titleView,这样它就可以被用户编辑。我正在尝试获得默认的字体/对齐/等等,这样我就可以将其应用到我的新视图中,因此它看起来与普通的导航栏标题相同。

我在用

代码语言:javascript
复制
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] initWithDictionary:self.navigationController.navigationBar.titleTextAttributes];
NSLog(@"%@", myDict);

但这只是一本空字典。我看过关于堆栈溢出的其他答案,这表明这应该返回默认的字体。

我做错了什么吗?或者iOS7中的情况发生了变化?

编辑:感谢下面的caglar,我更新了我的代码:

代码语言:javascript
复制
// Get the default title label
UILabel *navigationTitleLabel;
for (UIView *sv in self.navigationController.navigationBar.subviews)
{
    if (sv.subviews.count > 0 && [sv.subviews[0] isKindOfClass:[UILabel class]])
    {
        navigationTitleLabel = (UILabel *)sv.subviews[0];
        break;
    }
}

// Set the new text field to have the same attributes as the default title label
textField.font = navigationTitleLabel.font;
textField.textColor = navigationTitleLabel.textColor;
textField.textAlignment = NSTextAlignmentCenter;
self.navigationItem.titleView = textField;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-26 07:55:24

您可以访问导航栏的子视图,因为UINavigationBarUIView的子类。这是针对iOS 7的,在旧版本中,子视图的顺序可能与此不同。然而,想法是一样的,浏览一下UINavigationBar的子视图并达到标题。

代码语言:javascript
复制
for (UIView *sv in self.navigationController.navigationBar.subviews)
{
    if (sv.subviews.count > 0 && [sv.subviews[0] isKindOfClass:[UILabel class]])
    {
        self.navigationTitleLabel = (UILabel *)sv.subviews[0];
        break;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20211009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档