我想在我的应用中使用自定义titleView作为导航栏,以便用户可以编辑它。我正在尝试获取默认字体/对齐/等,以便我可以将其应用于我的新视图,因此它看起来与普通导航栏标题相同。
我正在使用
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] initWithDictionary:self.navigationController.navigationBar.titleTextAttributes];
NSLog(@"%@", myDict);
但这只是显示一个空字典。我已经查看了stackoverflow上的其他答案,建议这应该返回默认字体。
我做错了吗?或者在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;
答案 0 :(得分:2)
您可以访问导航栏的子视图,因为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;
}
}