我想为我的应用程序中的导航栏使用一个自定义的titleView,这样它就可以被用户编辑。我正在尝试获得默认的字体/对齐/等等,这样我就可以将其应用到我的新视图中,因此它看起来与普通的导航栏标题相同。
我在用
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] initWithDictionary:self.navigationController.navigationBar.titleTextAttributes];
NSLog(@"%@", myDict);但这只是一本空字典。我看过关于堆栈溢出的其他答案,这表明这应该返回默认的字体。
我做错了什么吗?或者iOS7中的情况发生了变化?
编辑:感谢下面的caglar,我更新了我的代码:
// 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;发布于 2013-11-26 07:55:24
您可以访问导航栏的子视图,因为UINavigationBar是UIView的子类。这是针对iOS 7的,在旧版本中,子视图的顺序可能与此不同。然而,想法是一样的,浏览一下UINavigationBar的子视图并达到标题。
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;
}
}https://stackoverflow.com/questions/20211009
复制相似问题