你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS7技巧 >> Swift之導航欄標題文字太長,導致返回按鈕文字消失問題解決

Swift之導航欄標題文字太長,導致返回按鈕文字消失問題解決

編輯:IOS7技巧
本文章來為各位介紹一篇關於Swift之導航欄標題文字太長,導致返回按鈕文字消失問題處理辦法了,希望此教程能夠幫助到各位朋友,有興趣的可以進來看看吧。

項目中常常會使用 UINavigationController 對各個頁面進行導航,導航欄左側的返回按鈕默認標題文字是上級頁面的 title。

原文:Swift - 導航欄標題文字太長,導致返回按鈕文字消失問題解決
但如果子頁面的標題(title)文字過長,那麼返回按鈕的文字就會消失: 原文:Swift - 導航欄標題文字太長,導致返回按鈕文字消失問題解決   同樣地,即使在父頁面中將 navigationItem.backBarButtonItem 設為自定義的 UIBarButtonItem,修改返回按鈕的文字: 原文:Swift - 導航欄標題文字太長,導致返回按鈕文字消失問題解決  

如果子頁面的標題文字過長,返回按鈕的文字也是就會消失:

原文:Swift - 導航欄標題文字太長,導致返回按鈕文字消失問題解決   解決辦法:將導航欄標題視圖替換成自定義label,並限制長度尺寸

通過 navigationItem.titleView 屬性可以很方便的將其替換成自定義的 UIView 視圖,這裡我們使用固定尺寸的 UILabel,效果圖如下:

原文:Swift - 導航欄標題文字太長,導致返回按鈕文字消失問題解決

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 屬性讓文本標簽自動縮放文字尺寸以適應標簽大小。效果圖如下:

原文:Swift - 導航欄標題文字太長,導致返回按鈕文字消失問題解決

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()
    }
}

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved