วิธีการเปลี่ยนแบบอักษรของ UIButton ด้วย Swift


207

ฉันกำลังพยายามเปลี่ยนแบบอักษรของ UIButton โดยใช้ Swift ...

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

อย่างไรก็ตาม.fontเลิกใช้แล้วและฉันไม่แน่ใจว่าจะเปลี่ยนแบบอักษรอื่นได้อย่างไร

ข้อเสนอแนะใด ๆ

คำตอบ:


421

ใช้titleLabelแทน fontคุณสมบัติจะเลิกใน iOS 3.0 มันไม่ทำงานใน Objective-C เป็นป้ายที่ใช้สำหรับการแสดงในชื่อtitleLabelUIButton

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

setTitle:forControlState:อย่างไรก็ตามในขณะที่การตั้งค่าข้อความชื่อเรื่องที่คุณควรใช้เท่านั้น อย่าใช้titleLabelเพื่อตั้งค่าข้อความใด ๆ สำหรับชื่อเรื่องโดยตรง


1
พวกคุณรู้ไหมว่าทำไมฉันถึงต้อง 'แกะ'? ป้ายกำกับของฉัน ?? เช่นนี้ ... myButton.titleLabel! .font = ...
DanMoore

beacause titleLabelเป็นคุณสมบัติทางเลือกขอบคุณก่อนหน้านี้ในรุ่นเบต้ามันไม่ได้
codester

4
วิธีนี้ทำให้ฉันสามารถเปลี่ยนชื่อ / รูปแบบตัวอักษรของฉันได้ แต่การเปลี่ยนคุณสมบัติขนาดทำให้ไม่แตกต่างกัน
เดฟ G

7
คุณไม่จำเป็นต้องบังคับให้แกะฉลาก myButton.titleLabel?.font = ...จะทำงานได้ถ้าหาก titleLabel เป็นศูนย์มันจะไม่ทำงาน
teradyl

1
ทำไมวิธีนี้ถึงไม่สามารถใช้งานกับคลาสย่อย UI ที่กำหนดเองได้
Munib

69

สำหรับSwift 3.0 :

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

โดยที่ "boldSystemFont" และ "16" สามารถแทนที่ด้วยแบบอักษรและขนาดที่กำหนดเองของคุณ


44

Dot-notation นั้นยอดเยี่ยม (รวดเร็ว 4.2) 👌

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

@mahasam UIFont อนุมานคำตอบนี้เหมือนกัน แต่ไม่ใช่ UIFont (แต่เพราะมันถูกอนุมานโดยคอมไพเลอร์ แต่มันก็เหมือนกัน) PD: ฉันพยายามเขียนด้วยวิธีนี้เสมอ แต่เพื่อให้คุณ รู้ว่าเหมือนกัน
Pablo Sanchez Gomez

1
@mahasam: "Dot-notation" เหมือนกับการอนุมาน และใช่มันเป็นนิสัยที่ดีที่จะนำมาใช้ และมันก็ไม่ได้เป็นคำตอบเดียวกับที่คนอื่น ๆ รวบรัดกว่าคำตอบอื่น ๆ IMO
นักปราชญ์

9

คุณไม่จำเป็นต้องบังคับแกะฉลากชื่อเพื่อตั้งค่า

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

เนื่องจากคุณไม่ได้ใช้ titleLabel ที่นี่คุณสามารถเลือกใช้และถ้าไม่มีก็จะเป็นแบบไม่มี op

ฉันจะเพิ่มตามที่คนอื่นพูดคุณสมบัติของฟอนต์เลิกใช้แล้วและต้องแน่ใจว่าใช้setTitle:forControlState:เมื่อตั้งค่าข้อความชื่อ



5

หากคุณมีปัญหาเกี่ยวกับขนาดตัวอักษร (แบบอักษรของคุณไม่ตอบสนองต่อการเปลี่ยนแปลงขนาด) ...

@codester มีรหัสที่ถูกต้อง:

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

อย่างไรก็ตามขนาดตัวอักษรของฉันไม่เปลี่ยนแปลง ปรากฎว่าฉันขอแบบอักษรที่ไม่มีอยู่ ("HelveticaNeue-Regular") มันไม่ได้ทำให้เกิดความผิดพลาด แต่ดูเหมือนว่าจะเพิกเฉยต่อคำสั่งแบบอักษรนั้นเพราะมัน เมื่อฉันเปลี่ยนแบบอักษรเป็นสิ่งที่มีอยู่แล้วการเปลี่ยนเป็น "ขนาด: x" ก็แสดงผล


5

เราสามารถใช้แบบอักษรของระบบที่แตกต่างกันเช่นด้านล่าง

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

และแบบอักษรที่กำหนดเองของคุณเช่นด้านล่าง

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

4

คุณควรผ่านtitleLabelคุณสมบัติ

button.titleLabel.font

fontคุณสมบัติได้รับการคัดค้านตั้งแต่ iOS 3.0




4

หากคุณกำลังตั้งค่า AttributedString เป็น UIButton คุณสามารถทำสิ่งต่าง ๆ ด้านล่างได้

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

4

หากคุณต้องการเปลี่ยนขนาดเท่านั้น ( Swift 4.0 ):

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

2

ตัวอย่าง: button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 12)

  • หากคุณต้องการใช้แบบอักษร defaul จากตระกูลของตัวเองให้ใช้ตัวอย่างเช่น: "HelveticaNeue"
  • หากคุณต้องการระบุแบบอักษรของครอบครัวให้ใช้ตัวอย่างเช่น: "HelveticaNeue-Bold"

1

วิธีนี้ใช้ไม่ได้ในขณะนี้:

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

งานนี้:

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

0

ขอบคุณสำหรับงานนี้ ฉันต้องการเปลี่ยนขนาดตัวอักษรเท่านั้นไม่เปลี่ยนชื่อแบบอักษร

var fontSizeButtonBig:Int = 30

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.