2015-12-15 39 views
5

Tôi đang cố gắng đặt nhãn tiêu đề trong thanh điều hướng của tôi để cho phép nhiều dòng. Tôi có mã điều khiển chuyển hướng tùy chỉnh mà tôi đang đặt mã nhiều dòng vào. Tôi biết rằng mã đã có sẵn, nhưng phần đa phần của tôi không hoạt động.Đa hướng thanh điều hướng Tiêu đề

let titleLabel = UILabel() 
titleLabel.frame = CGRectMake(0, 0, self.navigationBar.frame.width, self.navigationBar.frame.height * 2) 
titleLabel.numberOfLines = 0 
titleLabel.lineBreakMode = .ByWordWrapping 

navigationItem.titleView = titleLabel 

Nhưng văn bản vẫn chạy ở cuối. Tôi cũng đã thử đặt điều này vào chính bộ điều khiển chế độ xem riêng lẻ, thêm self.navigationController?. ở phía trước navigationItem với cùng kết quả.

Có điều gì tôi thiếu trong mã của mình để giữ nhãn tiêu đề không sử dụng nhiều dòng không?

+0

'navigationBar.frame.width' của bạn có thể chưa đủ để vừa với màn hình. Bạn có thể muốn ghi đè 'viewDidLayoutSubviews' để phát hiện khung bên phải. –

Trả lời

20

Dưới đây là một ví dụ code như thế nào bạn có thể tạo một multiline Navigationbar tiêu đề

let label: UILabel = UILabel(frame: CGRectMake(0, 0, 400, 50)) 
label.backgroundColor = UIColor.clearColor() 
label.numberOfLines = 2 
label.font = UIFont.boldSystemFontOfSize(16.0) 
label.textAlignment = .Center 
label.textColor = UIColor.whiteColor() 
label.text = "This is a\nmultiline string for the navBar" 
self.navigationItem.titleView = label 

Swift 3.0:

let label = UILabel(frame: CGRect(x:0, y:0, width:400, height:50)) 
label.backgroundColor = .clear 
label.numberOfLines = 2 
label.font = UIFont.boldSystemFont(ofSize: 16.0) 
label.textAlignment = .center 
label.textColor = .white 
label.text = "This is a\nmultiline string for the navBar" 
self.navigationItem.titleView = label 
+0

Gonna yêu cầu một số tinh chỉnh để làm cho nó hoạt động giống như cách tôi muốn nó, nhưng điều này đã giúp. –

+0

Tôi đã sử dụng 'navigationItem.titleView' mà không đặt khung một cách rõ ràng và nó hoạt động tốt. – gutte

0

Sử dụng này để có được vị trí nhãn chính xác như bạn muốn nó:

let labelWidth = navBar.bounds.width - 110 

    let label = UILabel(frame: CGRect(x:(navBar.bounds.width/2) - (labelWidth/2), y:0, width:labelWidth, height:navBar.bounds.height)) 
    label.backgroundColor = UIColor.clear 
    label.numberOfLines = 0 
    label.font = UIFont.boldSystemFont(ofSize: 13.0) 
    label.textAlignment = .center 
    label.textColor = UIColor.black 
    label.lineBreakMode = .byWordWrapping 

    label.text = loadedName 
    navBar.topItem?.title = nil 
    navBar.addSubview(label) 

giá trị 110 trong phần trên cùng e là khoảng cách bạn muốn ở hai bên nhãn.

0

Điều này có thể thực hiện được trong bảng phân cảnh. Chỉ cần kéo UIView vào thanh Điều hướng, sau đó kéo một UILabel lên nó trong đường viền tài liệu, đặt đường thẳng thành 2 và căn giữa.

enter image description here

Các vấn đề liên quan