Làm cách nào để đặt đậm và nghiêng trên UILabel
iPhone / iPad? Tôi đã tìm kiếm trên diễn đàn nhưng không có gì giúp tôi. Có ai giúp tôi không?
Làm cách nào để đặt đậm và nghiêng trên UILabel
iPhone / iPad? Tôi đã tìm kiếm trên diễn đàn nhưng không có gì giúp tôi. Có ai giúp tôi không?
Câu trả lời:
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
Có một danh sách các tên phông chữ mà bạn có thể đặt thay cho thuộc tính 'fontWithName'. Liên kết ở đây
Đừng cố chơi với tên phông chữ. Sử dụng bộ mô tả phông chữ bạn không cần tên:
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
có nghĩa là 'giữ nguyên kích thước'
Với Swift hãy thử tiện ích mở rộng sau:
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)
}
}
Sau đó, bạn có thể sử dụng nó theo cách này:
myLabel.font = myLabel.font.boldItalic()
hoặc thậm chí thêm các đặc điểm bổ sung như Ngưng tụ:
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
Sử dụng nó như sau:
myLabel.font = myLabel.font.bold
hoặc là
myLabel.font = myLabel.font.italic
hoặc là
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)
có lẽ nên return withTraits(.TraitBold, .TraitItalic)
khớp với tên hàm.
@Edinator có một cái nhìn về điều này ..
myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];
sử dụng bất kỳ một trong những điều trên tại một thời điểm bạn muốn
Bạn có thể đặt bất kỳ kiểu phông chữ, họ, kích thước cho nhãn, bằng cách nhấp vào chữ "T" trong trường Phông chữ .
Tôi có cùng một vấn đề cần áp dụng cả Bold và Italic trên nhãn và nút. Bạn chỉ có thể sử dụng mã sau đây để đạt được hiệu ứng này:
myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
Với phông chữ mặc định của hệ thống iOS 7, bạn sẽ sử dụng chữ in đậm helvetica neue nếu bạn muốn giữ phông chữ mặc định của hệ thống.
[titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];
Hoặc bạn có thể gọi nó đơn giản:
[titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
Swift 3
Dũng cảm:
let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)
Chữ nghiêng:
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];
bạn cũng có thể in đậm nhãn / phông chữ nút
Tôi đã thực hiện một biến thể của phản ứng của maksymilian wojakowski nơi bạn có thể thêm hoặc xóa một đặc điểm
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)
}
}
mẫu mực
label.font = label.font.italic().bold()
nó hữu ích khi sử dụng lại ô và bạn muốn xóa chữ nghiêng bạn đặt trên nhãn trong ô trước đó
Gần đây tôi đã viết một bài đăng trên blog về các hạn chế của UIFont API và cách giải quyết nó. Bạn có thể thấy nó ở đây
Với mã tôi cung cấp ở đó, bạn có thể nhận được UIFont mong muốn của mình dễ dàng như:
UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];
Và sau đó đặt nó vào UILabel của bạn (hoặc bất cứ điều gì) với:
myLabel.font = myFont;
Như đã được đề cập trong các câu trả lời này, bạn chỉ cần đúng tên phông chữ . Tôi thấy rằng iOSFonts.com là tài nguyên hữu ích nhất để biết chính xác tên nào sẽ sử dụng.
Ví dụ Văn bản in đậm:
UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];
UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[titleBold setFont:myBoldFont];
Ví dụ văn bản in nghiêng:
UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)];
UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
[subTitleItalic setFont:myItalicFont];
Mặc dù câu trả lời được cung cấp bởi @tolbard rất tuyệt vời và hoạt động tốt!
Tôi cảm thấy việc tạo ra một phần mở rộng cho một cái gì đó có thể đạt được chỉ trong một dòng mã, sẽ là một sự tiêu diệt quá mức.
Bạn có thể lấy kiểu in đậm cũng in nghiêng cho cùng một văn bản label
bằng cách thiết lập thuộc tính phông chữ bằng cách sử dụng UIFontDescriptor
như được hiển thị bên dưới trong ví dụ bên dưới bằng Swift 4.0 :
label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)
Các tùy chọn khác bao gồm:
traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded
Để biết thêm thông tin về những đặc điểm tượng trưng có nghĩa là gì? truy cập vào đây
Cập nhật câu trả lời tuyệt vời của Maksymilian Wojakowski cho 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)
}
}
Nhiều lần văn bản in đậm được xem xét theo cách kiến trúc thông tin ở cấp độ khác và do đó không được in đậm và đều đặn trong một dòng, vì vậy bạn có thể chia nó thành hai nhãn / textViews, một chữ thường và in nghiêng. Và sử dụng trình chỉnh sửa để chọn các kiểu phông chữ.