如何在UINavigationController标题中添加tile旁边的图标?

时间:2015-07-06 01:21:32

标签: ios objective-c ios7 uinavigationcontroller uinavigationbar

我正在尝试在导航栏标题旁边添加一个下拉箭头或图标(如下面的屏幕截图所示)但是没有找到一个好的解决方案,我认为这将是相当直接但我可以没有一个好的解决方案。

我尝试过的一种方法是通过设置视图控制器UIButton来用navigationItem.titleView替换标题,但这种方法的问题是因为我的标题长度可能不同我不能按钮框架计算出的CGRect大小报告为0,0。如果我尝试在viewWillDisplay()方法中更新按钮的框架,则按钮框架更改会在动画中放大,并且对用户可见,并且非常刺耳。

还有其他可行的解决方案,我觉得我只是接近这一切都是错的,不应该这么难。

Nav bar with arrow

3 个答案:

答案 0 :(得分:9)

如果您的角色在列表中可用作Unicode字符,则可以将其添加到字符串

按:Ctrl + Command + Space

enter image description here

假设您的角色是DOWN ARROWHEAD,那么您可以将其添加到标题字符串中。

如果您想添加归因字符串或图标,则可以按照Leo的答案进行操作。

答案 1 :(得分:7)

您可以使用referencedstring设置标签,它会自动调整大小

简称

enter image description here

长标题

enter image description here

例如

UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0,100, 40)];
label.textAlignment = NSTextAlignmentCenter;
label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
NSTextAttachment * attach = [[NSTextAttachment alloc] init];
attach.image = [UIImage imageNamed:@"memoAccess"];
attach.bounds = CGRectMake(0, 0, 20, 20);
NSAttributedString * imageStr = [NSAttributedString attributedStringWithAttachment:attach];
NSMutableAttributedString * mutableAttriStr = [[NSMutableAttributedString alloc] initWithString:@"Title"];
[mutableAttriStr appendAttributedString:imageStr];
label.attributedText = mutableAttriStr;
self.navigationItem.titleView = label;

答案 2 :(得分:0)

创建一个包含UILabel和UIButton的UIView。

log.warning(...)