2015-04-05 120 views
0

我想设置一个导航栏标题,但是我迄今试过的每种方法都会将标题移动得太远,或者视图根本无法加载并导致应用程序崩溃。这是我最近的尝试(应用程序崩溃)右侧和左侧酒吧项目的中心导航栏标题?

let rightItemSize = self.navigationItem.rightBarButtonItem?.width 
    let leftItemSize = self.navigationItem.leftBarButtonItem?.width 

    let navWidth = self.navigationController?.navigationBar.frame.size.width 
    let navHeight = self.navigationController?.navigationBar.frame.size.height 


    let titleWidth = navWidth! - (rightItemSize! + leftItemSize!) 

    let requiredPadding = rightItemSize! - leftItemSize! 

    var titleViewToAdd = UIView(frame: CGRectMake(0, 0, titleWidth, navHeight!)) 
    var label = UILabel(frame: CGRectMake(requiredPadding, 0, titleWidth - requiredPadding, navHeight!)) 

    label.backgroundColor = UIColor.redColor() 
    label.font = UIFont.boldSystemFontOfSize(14.0) 
    label.textColor = UIColor.blackColor() 
    label.numberOfLines = 1 
    label.textAlignment = NSTextAlignment.Center 

    label.text = "\(albumsArtist)" 

    titleViewToAdd.addSubview(label) 
    self.navigationItem.titleView = titleViewToAdd 

如果我使用self.navigationItem.title =“\(albumsArtist)”。文本是居中,工作很好,但最终我想有两行文本,这种方法将无法正常工作。

我知道有与答案就在这里类似的问题,但所有的人的我已经看过一直是Objective-C和没有工作这么好,当我试图将其转换为斯威夫特。

非常感谢!

回答

3

管理使它与此工作!

var label = UILabel(frame: CGRectMake(10.0, 0.0, 50.0, 40.0)) 
    label.backgroundColor = UIColor.redColor() 
    label.font = UIFont.boldSystemFontOfSize(14.0) 

    let string = albumsArtist.substringToIndex(min(25, albumsArtist.length)) 
    label.numberOfLines = 2 
    label.text = "\(string)\nXX tracks, X mins" 
    label.textColor = UIColor.blackColor() 
    label.sizeToFit() 
    label.textAlignment = NSTextAlignment.Center 

    self.navigationItem.titleView = label