私のアプリ用にiOS 8とiOS 9の両方のシステムをサポートしたいと考えています。私たちが知っているように、iOS 7と8のシステムフォントはHelvetica Neueです。しかし、iOS 9のシステムフォントはサンフランシスコです。また、Helveticaフォントを[UIFont fontWithName:@"HelveticaNeue" size:15];
で明示的に設定せず、[UIFont systemFontOfSize:15];
を使用すると、iOS 7と8のHelveticaとiOS 9のサンフランシスコが自動的に取得されます。それは素晴らしいです! インタフェースビルダーのラベルやボタンには、薄い、薄い、中程度のシステムフォントを設定できます。それも素晴らしいです。しかし、これらの薄い、超、中規模のシステムフォントをプログラムでコードで設定するにはどうすればよいですか? iOS 9以前のiOSでは、フォークでカテゴリを作成する必要がありますか?iOS 8とiOS 9両方のシステムフォント
答えて
+ systemFontOfSize:weight:
を使用してください。 iOS 8以上でご利用いただけます。
iOS 7ではインターフェイスビルダの設定が機能し、コードでは適切なウェイトのUIFontDescriptor
を作成する必要があります。
ありがとう@Leo Natan。しかし、私はコピーペースト愛好家のためのコードスニペットを示したいと思います。
UIFont* systemFont = [UIFont respondsToSelector:@selector(systemFontOfSize:weight:)] ? [UIFont systemFontOfSize:25 weight:UIFontWeightThin] : [UIFont fontWithName:@"HelveticaNeue-Thin" size:25];
OSのバージョンではなく、特定の機能をテストする方が良いです。可用性をテストするには '[UIFont respondsToSelector:@selector(systemFontOfSize:weight :)]'を使います。 –
@LeoNatanあなたはそうです!もちろん –
私はこの拡張機能を作成しました:これは、自動的に両方のiOS 8の正しいフォントを設定します
myLabel.font = UIFont.systemFontOfSize(14, weight: .Medium)
とこのようにフォントを適用することが可能になり、どの
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)!
}
}
}
iOS 9.
すばらしい答えを投稿するための@Antoineありがとうございます。以下はObjective Cです。もし誰かが欲しいのであれば、同様の答えです。重量: `のiOS 8.2で利用可能と後で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. iOS 8とiOS 9の両方のDeepLinkをサポート
- 2. SwiftでUITextViewをiOS 10とiOS 9の両方で開くリンク
- 3. iOS 9とiOS 9との互換性
- 4. iOS 8とiOS 9のNSURLセッションの違いは?
- 5. iOS 8のサンフランシスコフォント
- 6. アプリケーションバージョンIOS 7&IOS 9
- 7. SwiftのiOS 9とiOS 10用CoreData Stack
- 8. iOS 8/9でtoday-extensionの幅を取得する方法
- 9. iosアプリケーションでシステムフォントとしてカスタムフォントファミリを設定する方法
- 10. チェックiOSの9
- 11. 9/iOSの9.0.1
- 12. iOS 9のsegueForUnwindingToViewController
- 13. iOS 9のカスタムアラート
- 14. iOSの9:フレームワーク
- 15. UIcollectionView cellForItemAtIndexPathは、iOS 10でのみNullを返します。 iOS 9とiOS 8でうまく動作します
- 16. Unity3d Application.OpenURL(モバイルデバイス)(AndroidとiOSの両方)
- 17. バックグラウンドフェッチは、iOS 9 +
- 18. GoogleMobileAds iOS 9リンクエラー
- 19. iOS 9 - NSAllowsArbitraryLoads scope
- 20. iOS Layout Xcode 8
- 21. iOSの9 AVAssetDownloadURLSessionクラッシュ
- 22. iOSの9 supportedInterfaceOrientationsは
- 23. Xcode Swift - iOS 10&iOS 9テキストサイズの問題
- 24. iOS 8のptrace
- 25. iOSアプリケーションでシステムフォントを取得する方法は?
- 26. オーディオを録音し、iOS 8/9のUIWebView(JavascriptCore)にデータを渡す
- 27. のiOS - NSInternalInconsistencyExceptionはiOSの9で発生し、10が、iOSの11
- 28. Xcode 9 - iOS 11デバイスログプライベート
- 29. MapKit iOS 9 detailCalloutAccessoryView usage
- 30. iOS 9 Black Launch Screen
' + systemFontOfSizeのカテゴリを実装します。 –
@ValentinShamardinそれは心配しないでください。メソッドはiOS 8以来存在していました。それは公開されたAPIとして8.2に公開されたばかりでしたが、それを使うことができます。 –