ฉันจะตั้งค่าตัวหนาและตัวเอียงบนUILabel
iPhone / iPad ได้อย่างไร ฉันค้นหาฟอรัม แต่ไม่มีอะไรช่วยฉัน มีใครช่วยฉันบ้าง
ฉันจะตั้งค่าตัวหนาและตัวเอียงบนUILabel
iPhone / iPad ได้อย่างไร ฉันค้นหาฟอรัม แต่ไม่มีอะไรช่วยฉัน มีใครช่วยฉันบ้าง
คำตอบ:
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
มีรายการชื่อแบบอักษรที่คุณสามารถตั้งค่าแทนแอตทริบิวต์ 'fontWithName' ลิงก์อยู่ที่นี่
อย่าพยายามเล่นกับชื่อตัวอักษร การใช้ฟอนต์ descriptor คุณไม่ต้องการชื่อ:
UILabel * label = [[UILabel alloc] init]; // use your label object instead of this
UIFontDescriptor * fontD = [label.font.fontDescriptor
fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold
| UIFontDescriptorTraitItalic];
label.font = [UIFont fontWithDescriptor:fontD size:0];
size:0
หมายถึง 'รักษาขนาดตามที่เป็นอยู่'
ด้วย Swift ลองใช้ส่วนขยายต่อไปนี้:
extension UIFont {
func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
let descriptor = self.fontDescriptor()
.fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(traits))
return UIFont(descriptor: descriptor, size: 0)
}
func boldItalic() -> UIFont {
return withTraits(.TraitBold, .TraitItalic)
}
}
จากนั้นคุณสามารถใช้วิธีนี้:
myLabel.font = myLabel.font.boldItalic()
หรือเพิ่มลักษณะเพิ่มเติมเช่นย่อ:
myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)
extension UIFont {
var bold: UIFont {
return with(traits: .traitBold)
} // bold
var italic: UIFont {
return with(traits: .traitItalic)
} // italic
var boldItalic: UIFont {
return with(traits: [.traitBold, .traitItalic])
} // boldItalic
func with(traits: UIFontDescriptorSymbolicTraits) -> UIFont {
guard let descriptor = self.fontDescriptor.withSymbolicTraits(traits) else {
return self
} // guard
return UIFont(descriptor: descriptor, size: 0)
} // with(traits:)
} // extension
ใช้มันดังต่อไปนี้:
myLabel.font = myLabel.font.bold
หรือ
myLabel.font = myLabel.font.italic
หรือ
myLabel.font = myLabel.font.with(traits: [ .traitBold, .traitCondensed ])
extension UIFont {
var bold: UIFont {
return with(.traitBold)
}
var italic: UIFont {
return with(.traitItalic)
}
var boldItalic: UIFont {
return with([.traitBold, .traitItalic])
}
func with(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
guard let descriptor = self.fontDescriptor.withSymbolicTraits(UIFontDescriptor.SymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits)) else {
return self
}
return UIFont(descriptor: descriptor, size: 0)
}
func without(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
guard let descriptor = self.fontDescriptor.withSymbolicTraits(self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptor.SymbolicTraits(traits))) else {
return self
}
return UIFont(descriptor: descriptor, size: 0)
}
}
return withTraits(.TraitBold, .TraitCondensed)
น่าจะreturn withTraits(.TraitBold, .TraitItalic)
ตรงกับชื่อฟังก์ชั่น
@Edinator ดูในเรื่องนี้ ..
myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];
ใช้ข้อใดข้อหนึ่งในเวลาที่คุณต้องการ
ฉันมีปัญหาเดียวกันกับที่ต้องใช้ทั้งตัวหนาและตัวเอียงบนฉลากและปุ่ม คุณสามารถใช้รหัสต่อไปนี้เพื่อให้ได้ผลนี้:
myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
ด้วยฟอนต์เริ่มต้นของระบบ iOS 7 คุณจะใช้ตัวอักษรเฮลเวติก้าตัวหนาหากคุณต้องการรักษาแบบอักษรเริ่มต้นของระบบ
[titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];
หรือคุณสามารถเรียกมันว่า:
[titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
สวิฟท์ 3
Bold:
let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)
เอียง:
let italicFont = UIFont.italicSystemFont(ofSize:UIFont.labelFontSize)
btn.titleLabel.font=[UIFont fontWithName:@"Helvetica neue" size:10];
btn.titleLabel.font = [UIFont boldSystemFontOfSize:btnPrev.titleLabel.font.pointSize+3];
คุณสามารถทำอักษร / ปุ่มตัวหนาได้ด้วย
ฉันสร้างรูปแบบของการตอบสนองของ maksymilian wojakowski ซึ่งคุณสามารถเพิ่มหรือลบคุณลักษณะได้
extension UIFont {
func withTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
let descriptor = self.fontDescriptor
.withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits))
return UIFont(descriptor: descriptor!, size: 0)
}
func withoutTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
let descriptor = self.fontDescriptor
.withSymbolicTraits( self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptorSymbolicTraits(traits)))
return UIFont(descriptor: descriptor!, size: 0)
}
func bold() -> UIFont {
return withTraits( .traitBold)
}
func italic() -> UIFont {
return withTraits(.traitItalic)
}
func noItalic() -> UIFont {
return withoutTraits(.traitItalic)
}
func noBold() -> UIFont {
return withoutTraits(.traitBold)
}
}
กันตัวอย่าง
label.font = label.font.italic().bold()
มีประโยชน์เมื่อนำเซลล์กลับมาใช้ใหม่และคุณต้องการลบตัวเอียงที่คุณใส่ไว้ในฉลากในเซลล์ก่อนหน้า
ฉันเพิ่งเขียนบทความในบล็อกเกี่ยวกับข้อ จำกัด ของ UIFont API และวิธีการแก้ไข คุณสามารถดูได้ที่นี่
ด้วยรหัสที่ฉันให้ไว้คุณสามารถรับ UIFont ที่คุณต้องการได้ง่ายๆเหมือน:
UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];
จากนั้นตั้งค่าเป็น UILabel ของคุณ (หรืออะไรก็ตาม) ด้วย:
myLabel.font = myFont;
ตามที่ได้รับการกล่าวถึงอยู่แล้วในคำตอบเหล่านี้คุณเพียงแค่ต้องมีชื่อตัวอักษรที่ถูกต้อง ฉันพบว่า iOSFonts.comเป็นทรัพยากรที่มีประโยชน์มากที่สุดสำหรับการรู้ว่าต้องใช้ชื่ออะไร
ตัวอย่างข้อความตัวหนา:
UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];
UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[titleBold setFont:myBoldFont];
ตัวอย่างข้อความตัวเอียง:
UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)];
UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
[subTitleItalic setFont:myItalicFont];
แม้ว่าคำตอบของ @tolbard นั้นยอดเยี่ยมและใช้งานได้ดี!
ฉันรู้สึกว่าการสร้างส่วนขยายสำหรับบางสิ่งบางอย่างที่สามารถทำได้ในเพียงบรรทัดของรหัสจะเป็นการฆ่าที่มากเกินไป
คุณสามารถใส่สไตล์ที่เป็นตัวหนาและตัวเอียงสำหรับข้อความเดียวกันในของคุณlabel
โดยการตั้งค่าคุณสมบัติแบบอักษรโดยใช้UIFontDescriptor
ดังแสดงในตัวอย่างด้านล่างโดยใช้Swift 4.0 :
label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)
ตัวเลือกอื่น ๆ ได้แก่ :
traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับลักษณะของสัญลักษณ์เหล่านั้นหมายความว่าอย่างไร เยี่ยมชมที่นี่
การอัพเดตคำตอบที่ยอดเยี่ยมของ Maksymilian Wojakowskiสำหรับ swift 3
extension UIFont {
func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont? {
guard let descriptorL = self.fontDescriptor.withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits)) else{
return nil
}
return UIFont(descriptor: descriptorL, size: 0)
}
func boldItalic() -> UIFont? {
return withTraits(traits: .traitBold, .traitItalic)
}
}
แค่อยากพูดถึง
UIFont.systemFont(ofSize: 16, weight: UIFont.Weight.bold)
UIFont.boldSystemFont(ofSize: 16)
พวกเขามีผลลัพธ์ที่แตกต่าง ...
หลายครั้งที่ข้อความที่เป็นตัวหนาถูกมองว่าเป็นสถาปัตยกรรมข้อมูลในอีกระดับหนึ่งและดังนั้นจึงไม่มีตัวหนาและปกติในหนึ่งบรรทัดดังนั้นคุณสามารถแยกมันเป็นสองป้ายกำกับ / textViews, หนึ่งปกติและตัวเอียงตัวหนา และใช้โปรแกรมแก้ไขเพื่อเลือกรูปแบบตัวอักษร
ด้วยSwift 5
สำหรับ style = BOLD
label.font = UIFont(name:"HelveticaNeue-Bold", size: 15.0)
สำหรับ style = Medium
label.font = UIFont(name:"HelveticaNeue-Medium", size: 15.0)
สำหรับ style = Thin
label.font = UIFont(name:"HelveticaNeue-Thin", size: 15.0)