Tôi muốn hỗ trợ cả hệ thống iOS 8 và iOS 9 cho ứng dụng của mình. Và có lẽ iOS 7. Như chúng ta đã biết, font hệ thống cho iOS 7 và 8 là Helvetica Neue. Nhưng phông chữ hệ thống iOS 9 là San-Francisco. Và nếu bạn không đặt phông chữ Helvetica rõ ràng qua [UIFont fontWithName:@"HelveticaNeue" size:15];
, nhưng sử dụng [UIFont systemFontOfSize:15];
, bạn sẽ tự động nhận được Helvetica cho iOS 7 và 8 và San-Francisco cho iOS 9. Và nó tuyệt vời! Đối với các nhãn và nút của trình tạo giao diện, bạn có thể đặt phông chữ mỏng, siêu mỏng, trung bình vv. Nó cũng tuyệt vời. Nhưng làm thế nào tôi có thể thiết lập các phông chữ hệ thống mỏng, siêu, trung bình trong mã, lập trình? Tôi có cần tạo danh mục có ngã ba cho iOS 9 và iOS trước không?Phông chữ hệ thống cho cả iOS 8 và iOS 9
Trả lời
Sử dụng + systemFontOfSize:weight:
. Ứng dụng này có sẵn cho iOS 8 trở lên.
Đối với iOS 7, cài đặt trình tạo giao diện sẽ hoạt động và đối với mã, bạn cần phải tạo UIFontDescriptor
với trọng lượng thích hợp.
Cảm ơn @Leo Natan. Nhưng tôi muốn hiển thị đoạn mã cho những người yêu thích sao chép-dán.
UIFont* systemFont = [UIFont respondsToSelector:@selector(systemFontOfSize:weight:)] ? [UIFont systemFontOfSize:25 weight:UIFontWeightThin] : [UIFont fontWithName:@"HelveticaNeue-Thin" size:25];
Nó là tốt hơn để kiểm tra cho chức năng cụ thể, chứ không phải là phiên bản hệ điều hành. Sử dụng '[UIFont respondsToSelector: @selector (systemFontOfSize: weight :)]' để kiểm tra tính khả dụng. –
@LeoNatan Bạn nói đúng! Tất nhiên –
tôi đã tạo ra phần mở rộng này:
import Foundation
import UIKit
enum SystemFontWeight : String {
case UltraLight = "HelveticaNeue-UltraLight"
case Thin = "HelveticaNeue-Thin"
case Light = "HelveticaNeue-Light"
case Regular = "HelveticaNeue"
case Medium = "HelveticaNeue-Medium"
case Semibold = "Helvetica-Bold"
case Bold = "HelveticaNeue-Bold"
case Heavy = "HelveticaNeue-CondensedBold"
case Black = "HelveticaNeue-CondensedBlack"
var weightValue:CGFloat? {
if #available(iOS 8.2, *) {
switch self {
case .UltraLight:
return UIFontWeightUltraLight
case .Thin:
return UIFontWeightThin
case .Light:
return UIFontWeightLight
case .Regular:
return UIFontWeightRegular
case .Medium:
return UIFontWeightMedium
case .Semibold:
return UIFontWeightSemibold
case .Bold:
return UIFontWeightBold
case .Heavy:
return UIFontWeightHeavy
case .Black:
return UIFontWeightBlack
}
} else {
return nil
}
}
}
extension UIFont {
static func systemFontOfSize(fontSize:CGFloat, weight:SystemFontWeight) -> UIFont {
if #available(iOS 8.2, *) {
return UIFont.systemFontOfSize(fontSize, weight: weight.weightValue!)
} else {
// Fallback on earlier versions
return UIFont(name: weight.rawValue, size: fontSize)!
}
}
}
Mà làm cho nó có thể áp dụng phông chữ như thế này:
myLabel.font = UIFont.systemFontOfSize(14, weight: .Medium)
này sẽ tự động thiết lập các phông chữ chính xác cho cả iOS 8 và iOS 9.
Cảm ơn @Antoine đã đăng câu trả lời tuyệt vời cho nhanh chóng. Sau đây là mục tiêu C Tương tự như loại câu trả lời nếu ai muốn. Thực hiện mục cho UIFont
UIFont + Cat.m
#import "UIFont+Cat.h"
@implementation UIFont (Cat)
+ (UIFont *)systemFontWithSize:(CGFloat)fontSize weight:(CGFloat)weight {
if ([UIFont respondsToSelector:@selector(systemFontOfSize:weight:)]) {
return [UIFont systemFontOfSize:fontSize weight:weight];
}
NSString *fontName = @"HelveticaNeue";
if (weight == UIFontWeightUltraLight) {
fontName = @"HelveticaNeue-UltraLight";
}
else if (weight == UIFontWeightThin) {
fontName = @"HelveticaNeue-Thin";
}
else if (weight == UIFontWeightLight) {
fontName = @"HelveticaNeue-Light";
}
else if (weight == UIFontWeightRegular) {
fontName = @"HelveticaNeue";
}
else if (weight == UIFontWeightMedium) {
fontName = @"HelveticaNeue-Medium";
}
else if (weight == UIFontWeightSemibold) {
fontName = @"Helvetica-Bold";
}
else if (weight == UIFontWeightBold) {
fontName = @"HelveticaNeue-Bold";
}
else if (weight == UIFontWeightHeavy) {
fontName = @"HelveticaNeue-CondensedBold";
}
else if (weight == UIFontWeightBlack) {
fontName = @"HelveticaNeue-CondensedBlack";
}
return [UIFont fontWithName:fontName size:fontSize];
}
@end
- 1. Phông chữ San Francisco trong iOS 8
- 2. iOS Foundation: kích thước phông chữ hệ thống
- 3. hệ thống khác nhau chữ Medium trên iOS 7
- 4. Phông chữ nào có sẵn trong iOS 9?
- 5. Phông chữ Roboto cho ios
- 6. Tải phông chữ trong iOS 11 (hoặc Xcode 9)
- 7. Phông chữ tùy chỉnh không hoạt động trong iOS 8
- 8. Mã hóa hệ thống tệp cho IOS?
- 9. Chiều cao của UITabBar trên iOS 8, iOS 9, iOS 10 và iOS 11 là bao nhiêu?
- 10. Gỡ lỗi Safari di động trong iOS 8 và iOS 9
- 11. Cách đặt phông chữ cho nhãn khi khởi chạy Màn hình trong iOS 8
- 12. UINavigationBar phông chữ tùy chỉnh không làm việc trên iOS 8
- 13. iOS Code Hoạt động trên iOS 9 chứ không phải trên iOS 8?
- 14. Phông chữ trên thiết bị iOS
- 15. Phông chữ nhúng iOS Quartz trong pdf
- 16. iOS 5 Phông chữ Tuỳ chỉnh
- 17. Phông chữ nhúng của iOS trong PDF
- 18. iOS 9 chế lỗi
- 19. Cập nhật phông chữ UIBarbuttonItem khi bị tắt - iOS 11
- 20. Cách sử dụng phông chữ San Francisco mới trong iOS 9?
- 21. Thiết kế hệ thống nhận xét theo chuỗi cho iOS
- 22. Thay thế cho UIAlertView cho iOS 9?
- 23. Màu nền UITableView iOS 9
- 24. Trên iOS, tôi có thể truy cập tệp TTF của phông chữ do hệ thống cung cấp
- 25. iOS 9 ATS và Firebase REST
- 26. Phông chữ tùy chỉnh trong iOS với Phonegap Canvas
- 27. Hãy phantomjs (nodejs hệ thống) sử dụng phông chữ địa phương thay vì phông chữ web
- 28. GIDSignIn iOS 9
- 29. Xamarin.Forms trên iOS 11.1.2: Webview tải phông chữ lớn hơn
- 30. iOS 9 UIButton Inititalization
'+ systemFontOfSize: trọng lượng:' Có sẵn trong iOS 8.2 và sau này. –
@ValentinShamardin Đừng lo lắng về nó, phương pháp đã có từ iOS 8. Nó đã được tiếp xúc như API công khai trong 8.2, nhưng bạn có thể sử dụng nó. –