Cách thay đổi phông chữ của UIButton bằng Swift


207

Tôi đang cố gắng thay đổi phông chữ của UIButton bằng Swift ...

myButton.font = UIFont(name: "...", 10)

Tuy nhiên .fontkhông được chấp nhận và tôi không chắc chắn cách thay đổi phông chữ khác.

Bất kỳ đề xuất?

Câu trả lời:


421

Sử dụng titleLabelthay thế. Tài fontsản bị phản đối trong iOS 3.0. Nó cũng không hoạt động trong Objective-C. titleLabellà nhãn được sử dụng để hiển thị tiêu đề trên UIButton.

myButton.titleLabel?.font =  UIFont(name: YourfontName, size: 20)

Tuy nhiên, trong khi thiết lập văn bản tiêu đề, bạn chỉ nên sử dụng setTitle:forControlState:. Không sử dụng titleLabelđể đặt bất kỳ văn bản cho tiêu đề trực tiếp.


1
Các bạn có biết tại sao tôi phải 'cởi trói' không? nhãn của tôi ?? như thế này ... myButton.titleLabel! .font = ...
DanMoore

beacause titleLabellà thuộc tính tùy chọn. Cảm ơn trước đây là bản beta.
codester

4
Phương pháp này cho phép tôi thay đổi tên / kiểu phông chữ của mình, nhưng việc thay đổi thuộc tính kích thước không tạo ra sự khác biệt.
Dave G

7
Bạn không cần phải mở nhãn. myButton.titleLabel?.font = ...sẽ hoạt động kể từ khi titleLabel không hoạt động, nó sẽ chỉ là một no-op
teradyl 11/03/2016

1
Tại sao phương thức này không hoạt động cho lớp con UIbutton tùy chỉnh?
Munib

69

Đối với Swift 3.0 :

button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)

trong đó "boldSystemFont" và "16" có thể được thay thế bằng phông chữ và kích thước tùy chỉnh của bạn.


44

Ký hiệu chấm là tuyệt vời (swift 4.2)

btn.titleLabel?.font = .systemFont(ofSize: 12)

@mahasam UIFont được suy luận, câu trả lời này giống với những người khác nhưng không có UIFont (nhưng vì nó được trình biên dịch suy ra, nhưng nó giống nhau) PD: Tôi luôn cố gắng viết theo cách này, nhưng chỉ để cho bạn biết rằng đó là như nhau
Pablo Sanchez Gomez

1
@mahasam: "Ký hiệu chấm" giống như được suy ra. Và vâng, đó là một thói quen tốt để áp dụng. Và đó không phải là những câu trả lời giống như những câu trả lời khác vì nó ngắn gọn hơn những câu trả lời khác. IMO
eonist

9

Bạn không cần phải hủy bỏ tiêu đềLabel để đặt nó.

myButton.titleLabel?.font = UIFont(name: YourfontName, size: 20)

Vì bạn không sử dụng tiêu đề Nhãn ở đây, bạn chỉ có thể tùy ý sử dụng nó và nếu không, nó sẽ chỉ là không có.

Tôi cũng sẽ thêm như những người khác đang nói, thuộc tính phông chữ không được dùng nữa và đảm bảo sử dụng setTitle:forControlState:khi đặt văn bản tiêu đề.


7

Từ tài liệu :

Phông chữ được sử dụng để hiển thị văn bản trên nút. ( Không dùng nữa trong iOS 3.0 . Sử dụng thuộc fonttính của titleLabelthay thế.)


5

Nếu bạn gặp vấn đề về kích thước phông chữ (phông chữ của bạn không đáp ứng với thay đổi kích thước) ...

@codester có mã đúng:

myButton.titleLabel!.font =  UIFont(name: YourfontName, size: 20)

Tuy nhiên, kích thước phông chữ của tôi không thay đổi. Hóa ra tôi yêu cầu một phông chữ không tồn tại ("HelveticaNeue-Thường xuyên"). Nó không gây ra sự cố, nhưng dường như chỉ bỏ qua tuyên bố phông chữ đó vì nó. Khi tôi thay đổi phông chữ thành thứ gì đó tồn tại, thay đổi thành "size: x" đã hiển thị.


5

chúng ta có thể sử dụng các loại phông chữ hệ thống khác nhau như dưới đây

myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
myButton.titleLabel?.font = UIFont.italicSystemFont(ofSize:UIFont.smallSystemFontSize)
myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: UIFont.buttonFontSize)

và phông chữ tùy chỉnh của bạn như dưới đây

    myButton.titleLabel?.font = UIFont(name: "Helvetica", size:12)

4

Bạn nên đi qua titleLabeltài sản.

button.titleLabel.font

Tài fontsản đã bị từ chối kể từ iOS 3.0.


4

Hãy nhìn vào đây .

Thay vào đó, bạn nên đặt phông chữ của tiêu đề của nút.

myButton.titleLabel!.font = UIFont(name: "...", 10)

4

Điều này hoạt động trong Swift 3.0:

btn.titleLabel?.font = UIFont(name:"Times New Roman", size: 20) 

4

Nếu bạn đang đặt AttributionString cho UIButton thì bạn có thể thực hiện việc bên dưới.

let attributedText = NSAttributedString(string: "Hello", attributes: [NSAttributedStringKey.font: UIFont(name: "Calibri", size: 19)])
okayButton.setAttributedTitle(attributedText, for: .normal)

4

Nếu bạn chỉ cần thay đổi kích thước ( Swift 4.0 ):

button.titleLabel?.font = button.titleLabel?.font.withSize(12)

2

Thí dụ: button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 12)

  • Nếu bạn muốn sử dụng phông chữ mặc định từ chính gia đình của mình, hãy sử dụng ví dụ: "HelveticaNeue"
  • Nếu bạn muốn chỉ định phông chữ gia đình, hãy sử dụng ví dụ: "HelveticaNeue-Bold"

1

Cách này hiện không hoạt động:

 btn.titleLabel?.font = UIFont(name: "Helvetica", size:12)

Những công việc này:

 btn.titleLabel?.font = UIFont.init(name: "Helvetica", size:12)

0

công việc này cho tôi, cảm ơn. Tôi muốn thay đổi kích thước văn bản chỉ không thay đổi tên phông chữ.

var fontSizeButtonBig:Int = 30

btnMothy9.titleLabel? .font = .systemFont (ofSize: CGFloat (fontSizeButtonBig))

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.