是否可以让标题文本缩小以适应UINavigationBar
iOS。
(对于没有自动布局的纵向 iPhone 应用程序)。
我正在动态设置标题栏,但有时文本太长,而此刻它只是用省略号将其切断。
即“这是...”
我希望它缩小文本。
是否可以让标题文本缩小以适应UINavigationBar
iOS。
(对于没有自动布局的纵向 iPhone 应用程序)。
我正在动态设置标题栏,但有时文本太长,而此刻它只是用省略号将其切断。
即“这是...”
我希望它缩小文本。
您可以创建自己的标题视图来制作它。
像这样的东西:
- (void)viewDidLoad
{
[super viewDidLoad];
//Do any additional setup after loading the view, typically from a nib.
UILabel *titleLabelView = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 40)]; //<<---- Actually will be auto-resized according to frame of navigation bar;
[titleLabelView setBackgroundColor:[UIColor clearColor]];
[titleLabelView setTextAlignment: NSTextAlignmentCenter];
[titleLabelView setTextColor:[UIColor whiteColor]];
[titleLabelView setFont:[UIFont systemFontOfSize: 27]]; //<<--- Greatest font size
[titleLabelView setAdjustsFontSizeToFitWidth:YES]; //<<---- Allow shrink
// [titleLabelView setAdjustsLetterSpacingToFitWidth:YES]; //<<-- Another option for iOS 6+
titleLabelView.text = @"This is a Title";
navigationBar.topItem.titleView = titleLabelView;
//....
}
希望这可以帮助。
Xcode 7.1 - Swift 2.0
//Adding Title Label
var navigationTitlelabel = UILabel(frame: CGRectMake(0, 0, 200, 21))
navigationTitlelabel.center = CGPointMake(160, 284)
navigationTitlelabel.textAlignment = NSTextAlignment.Center
navigationTitlelabel.textColor = UIColor.whiteColor()
navigationTitlelabel.text = "WORK ORDER"
self.navigationController!.navigationBar.topItem!.titleView = navigationTitlelabel
我将此代码用于 swift 4(注意标签 rect 并不重要..)
func navBar()->UINavigationBar?{
let navBar = self.navigationController?.navigationBar
return navBar
}
override func viewDidLoad() {
super.viewDidLoad()
setTNavBarTitleAsLabel(title: "VERYYYY VERYYYY VERYYYY VERYYYY VERYYYY VERYYYY VERYYYY LONGGGGGG")
}
// will shrink label...
func setTNavBarTitleAsLabel(title: String, color: UIColor ){
// removed some code..
let navigationTitlelabel = UILabel(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
navigationTitlelabel.numberOfLines = 1
navigationTitlelabel.lineBreakMode = .byTruncatingTail
navigationTitlelabel.adjustsFontSizeToFitWidth = true
navigationTitlelabel.minimumScaleFactor = 0.1
navigationTitlelabel.textAlignment = .center
navigationTitlelabel.textColor = color
navigationTitlelabel.text = title
if let navBar = navBar(){
//was navBar.topItem?.title = title
self.navBar()?.topItem?.titleView = navigationTitlelabel
//navBar.titleTextAttributes = [.foregroundColor : color ?? .black]
}
}