在 iOS 開發中,導航欄標題文字過長時常會被截斷,開發者往往希望標題字體能根據可用寬度自動縮放,類似 UILabel 的 adjustsFontSizeToFitWidth 屬性。然而,UINavigationItem 的預設 titleView 並不直接支援此特性,導致許多開發者嘗試多種方法仍無法實現。
核心思路是建立一個自定義的 UILabel 作為導航項的 titleView,並啟用其字體自適應屬性。具體步驟如下:
UILabel,設定適當的框架尺寸。adjustsFontSizeToFitWidth = YES,並根據需要設定 minimumScaleFactor 防止字體過小。self.navigationItem.titleView。UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 44)];
titleLabel.text = @"這是一個很長的導航標題文字";
titleLabel.textAlignment = NSTextAlignmentCenter;
titleLabel.font = [UIFont boldSystemFontOfSize:18];
titleLabel.adjustsFontSizeToFitWidth = YES;
titleLabel.minimumScaleFactor = 0.6;
titleLabel.numberOfLines = 1;
self.navigationItem.titleView = titleLabel;
viewDidLoad 中以程式碼建立並指派。minimumScaleFactor 可確保字體不會縮小到難以閱讀。此方法簡單有效,能完美解決導航標題文字過長被截斷的問題,提升使用者體驗。