当 backBarButtonItem 有长文本时显示“...”

Posted

技术标签:

【中文标题】当 backBarButtonItem 有长文本时显示“...”【英文标题】:Display "..." when backBarButtonItem have long text 【发布时间】:2016-02-17 03:31:46 【问题描述】:

我是 ios 编程的新手。我使用应用程序使用 导航栏,并为 Back 按钮设置文本,如下所示:

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"my text" style:UIBarButtonItemStyleBordered target:nil action:nil];

它工作正常。但是,当我的文本很长时会出现问题,backBarButtonItem 显示默认文本是 Back

所以,问题是:如何在 backBarButtonItem 中显示长文本,也许显示“...”而不是全文。或者我可以使用自定义视图替换默认导航栏吗?

P/s : 我已经推荐了"back" text displayed in iOS7 UINavigationBar when view title is long 但它对我解决这个问题没有帮助。

【问题讨论】:

"back" text displayed in iOS7 UINavigationBar when view title is long的可能重复 @GuyDaher ,对不起,但它没有帮助,并且没有接受任何答案来解决这个问题 【参考方案1】:

试试这个

self.navigationItem.hidesBackButton = YES;
UIButton *btnLeft=[UIButton buttonWithType:UIButtonTypeCustom];
btnLeft.frame=CGRectMake(0, 0, button.widh, button.height);
[btnLeft addTarget:self action:@selector(onClickBackBarItem:) forControlEvents:UIControlEventTouchUpInside];
[btnLeft setTitle:@"YOUR TEXT"  forState:UIControlStateNormal];
btnLeft.titleLabel.font  = [UIFont fontWithName:@"font_name" size:25.0];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btnLeft];

希望对你有帮助

【讨论】:

感谢您的回答,但这对我没有帮助,它只显示 leftBarButtonItem ,而不是 backBarButtonItem 在这种情况下 你可以试试这个吗?选择 Navigaiton Item -> Show the attributes inspector -> Give the Title you want【参考方案2】:

使用sizeToFitUIButton中显示全文

    UIButton *btnBack = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 20) ];
    [btnBack setTitle:@"Skip" forState:UIControlStateNormal];
    btnBack.titleLabel.font = [UIFont fontWithName:@"SFUIText-Medium" size:15];
    [btnBack sizeToFit];
    [btnBack addTarget:self action:@selector(backActionEvent:) forControlEvents:UIControlEventTouchUpInside];
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btnSkip];

【讨论】:

可能无法将长文本显示到backBarButtonItem,所以需要设置leftBarButtonItem并执行[self.navigationController popViewControllerAnimated:YES];在 backActionEvent 上(即 UIControlEventTouchUpInside)。 是的,但是如果我设置 leftBarButtonItem,如何显示“ 如果你想显示箭头而不是你需要在 UIButton 对象中设置箭头图像(在文本之前)。 我会尝试,但有一个小问题,我如何限制按钮标题的长度,因为我使用了 rightBarButtonItem 在 UIButton ***.com/questions/11717219/uibutton-image-text-ios 和后退箭头图像中参考此图像+文本(根据您的方便更改图像颜色)cdn4.iconfinder.com/data/icons/ionicons/512/…

以上是关于当 backBarButtonItem 有长文本时显示“...”的主要内容,如果未能解决你的问题,请参考以下文章

如何为 backBarButtonItem 设置自定义字体 [重复]

点击backBarButtonItem时消息怎样拦截

BackBarButtonItem 在其上显示导航栏标题,并在每次翻页时更新

如果有长文本,则可滚动 UIView,否则不可折叠

如何在颤动中自定义标签栏宽度?

如果要换行的文本中有长字符串,则 sizeWithFont 不会为 UITextView 提供正确的高度