Swift之导航栏标题文字太长,导致返回按钮文字消失问题解决

项目中常常会使用 UINavigationController 对各个页面进行导航,导航栏左侧的返回按钮默认标题文字是上级页面的 title。

但如果子页面的标题(title)文字过长,那么返回按钮的文字就会消失:

 

同样地,即使在父页面中将 navigationItem.backBarButtonItem 设为自定义的 UIBarButtonItem,修改返回按钮的文字:

 

如果子页面的标题文字过长,返回按钮的文字也是就会消失:

 

解决办法:将导航栏标题视图替换成自定义label,并限制长度尺寸

通过 navigationItem.titleView 属性可以很方便的将其替换成自定义的 UIView 视图,这里我们使用固定尺寸的 UILabel,效果图如下:

import UIKit
 
class DetailViewController: UIViewController {
     
    override func viewDidLoad() {
        let titleView = UIView(frame: CGRectMake(0, 0, 200, 40))
        let labelForTitle = UILabel(frame: CGRectMake(0, 0, 200, 30))
        labelForTitle.font = UIFont.systemFontOfSize(17.0, weight: UIFontWeightMedium)
        labelForTitle.center = titleView.center
        labelForTitle.text = "文章列表(欢迎访问hangge.com)"
        titleView.addSubview(labelForTitle)
        self.navigationItem.titleView = titleView
    }
     
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
功能改进:如果文字过长,label自动缩小文字大小
上面的方法会把多余的文字截断并在后面添加...。如果想让标题文字能完全显示,可以通过 adjustsFontSizeToFitWidth 属性让文本标签自动缩放文字尺寸以适应标签大小。效果图如下:

import UIKit
 
class DetailViewController: UIViewController {
     
    override func viewDidLoad() {
        let titleView = UIView(frame: CGRectMake(0, 0, 200, 40))
        let labelForTitle = UILabel(frame: CGRectMake(0, 0, 200, 30))
        labelForTitle.font = UIFont.systemFontOfSize(17.0, weight: UIFontWeightMedium)
        labelForTitle.center = titleView.center
        labelForTitle.adjustsFontSizeToFitWidth = true
        labelForTitle.text = "文章列表(欢迎访问hangge.com)"
        titleView.addSubview(labelForTitle)
        self.navigationItem.titleView = titleView
    }
     
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

时间: 2024-10-23 03:47:59

Swift之导航栏标题文字太长,导致返回按钮文字消失问题解决的相关文章

Swift将导航栏标题修改成自定义视图(图片、按钮、分段选择等)

默认导航栏UINavigationController的标题是文字,通过navigationItem.titleView属性可以很方便的将其替换成自定义的UIView视图.     1,使用图片作为标题   1 2 let image = UIImage(named: "logo") self.navigationItem.titleView = UIImageView(image: image) 2,使用按钮作为标题 import UIKit   class ViewControll

Swift在导航栏左侧或者右侧放置多个按钮例子

使用 navigationItem.leftBarButtonItem 和 navigationItem.rightBarButtonItem 可以很方便的分别设置导航栏左侧和右侧按钮,但一侧只能有一个按钮. 如果想要在一侧使用多个按钮,可以通过 leftBarButtonItems 和 rightBarButtonItems 来实现.    下面演示给导航栏右侧添加两个按钮(搜索和设置): 同时两个按钮间设置了间距,并将设置按钮顶到边上. import UIKit   class ViewCo

自定义iOS7导航栏背景,标题和返回按钮文字颜色

在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Color 方法一: [objc] view plaincopy //set NavigationBar 背景颜色&title 颜色   [self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:20/25

ios开发Swift修改导航栏“返回”按钮文字,图标

项目中常常会使用 UINavigationController 对各个页面进行导航,导航栏左侧的返回按钮默认标题文字是上级页面的title. 但如果上级页面的标题很长,那么这个返回按钮字很多就会很丑:    开发Swift修改导航栏"返回"按钮文字,图标-swift 导航栏返回按钮">      当文字极其长时返回文字就会变成"back":         一,要修改"返回按钮"的文字,有如下两种方式: 1,在父页面中设置 将na

设置导航栏标题的文字属性

设置导航栏标题的文字属性 效果: 源码: UINavigationController+TitleTextAttributes.h 与 UINavigationController+TitleTextAttributes.m // // UINavigationController+TitleTextAttributes.h // NC // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <UIKit/UIKit.h>

C# combo box一行文字太长,希望水平滚动,显示完全!急急急。

问题描述 C#做了一个WinForm窗体,有个combobox的控件,不想变宽,怎么实现鼠标点击以后,内容水平滚动,以便内容显示完全呢?类似跑马灯格式 解决方案 解决方案二:在winform下实现是相当繁锁的,那些做控件的sb自以为自己的控件很牛B,其实跟客户的需要差远了解决方案三:看看这个解决方案四:非要这么做,那你需要对下拉条目进行自绘,而且还要配合一个定时器.解决方案五:我觉得加上额外的线程定时重绘指定区域效果应该是最好的了.比如,item[1]的字符为123456,实际上只能显示123,

Laravel 5.4因特殊字段太长导致migrations报错的解决

前言 本文主要介绍了关于Laravel 5.4因特殊字段太长导致migrations报错的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: laravel 5.4 改变了默认的数据库字符集,现在utf8mb4包括存储emojis支持.MySQL 需要v5.7.7或者更高版本,当你试着在一些MariaDB或者一些老版本的的MySQL上运行 migrations 命令时,你会碰到下面这个错误: [Illuminate\Database\QueryException] SQLS

Bootstrap导航栏各元素操作方法(表单、按钮、文本)_javascript技巧

本文主要包括三大方面,大家仔细学习. 1.导航栏中的表单导航栏中的表单不是使用 Bootstrap 表单 章节中所讲到的默认的 class,它是使用 .navbar-form class.这确保了表单适当的垂直对齐和在较窄的视口中折叠的行为.使用对齐方式选项(这将在组件对齐方式部分进行详细讲解)来决定导航栏中的内容放置在哪里. 下面的实例演示了这点: <!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - 默认

Android TextView显示文字过长时添加阴影渐变消失效果

TextView 上显示的文字超过其最长限制的时候,要如何实现以下效果:   values/styles.xml  <style name="AudioFileInfoOverlayText"> <item name="android:paddingLeft">4px</item> <item name="android:paddingBottom">4px</item> <ite