दोनों के लिए सिस्टम फ़ॉन्ट मैं अपने ऐप के लिए आईओएस 8 और आईओएस 9 सिस्टम दोनों का समर्थन करना चाहता हूं। और शायद आईओएस 7. जैसा कि हम जानते हैं, आईओएस 7 और 8 के लिए सिस्टम फ़ॉन्ट हेल्वैटिका नियू है। लेकिन आईओएस 9 सिस्टम फ़ॉन्ट में सैन फ्रांसिस्को है। और यदि आप हेलवेस्टिका फ़ॉन्ट को [UIFont fontWithName:@"HelveticaNeue" size:15];
के माध्यम से स्पष्ट रूप से सेट नहीं करते हैं, लेकिन [UIFont systemFontOfSize:15];
का उपयोग करें, तो आपको आईओएस 7 और 8 के लिए हेल्वैटिका और आईओएस 9 के लिए सैन फ्रांसिस्को मिल जाएगा। और यह बहुत अच्छा है! इंटरफ़ेस बिल्डर के लेबल और बटन के लिए आप पतले, अति पतले, मध्यम आदि सिस्टम फोंट सेट कर सकते हैं। यह भी बहुत अच्छा है। लेकिन मैं प्रोग्राम में, इन पतले, अल्ट्रा, मध्यम सिस्टम फोंट कोड में कैसे सेट कर सकता हूं? क्या मुझे आईओएस 9 और पिछले आईओएस के लिए एक कांटा के साथ एक श्रेणी बनाने की ज़रूरत है?आईओएस 8 और आईओएस 9
उत्तर
+ systemFontOfSize:weight:
का उपयोग करें। यह आईओएस 8 और उसके बाद के लिए उपलब्ध है।
आईओएस 7 के लिए, इंटरफ़ेस बिल्डर सेटिंग्स काम करेगी, और कोड के लिए आपको उचित वजन के साथ UIFontDescriptor
बनाने की आवश्यकता होगी।
धन्यवाद @ लियो नतन। लेकिन मैं कॉपी-पेस्ट प्रेमियों के लिए एक कोड स्निपेट दिखाना चाहता हूं।
UIFont* systemFont = [UIFont respondsToSelector:@selector(systemFontOfSize:weight:)] ? [UIFont systemFontOfSize:25 weight:UIFontWeightThin] : [UIFont fontWithName:@"HelveticaNeue-Thin" size:25];
ओएस संस्करण की बजाय विशिष्ट कार्यक्षमता के लिए परीक्षण करना बेहतर है। उपलब्धता के परीक्षण के लिए '[यूआईएफओटी प्रतिक्रियाएं चयनकर्ता: @ चयनकर्ता (systemFontOfSize: weight :)]' का उपयोग करें। –
@LeoNatan आप सही हैं! बेशक –
मैं इस एक्सटेंशन बना लिया है:
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)!
}
}
}
कौन सा संभव बनाता है इस तरह फ़ॉन्ट लागू करने के लिए:
myLabel.font = UIFont.systemFontOfSize(14, weight: .Medium)
यह स्वचालित रूप से दोनों iOS 8 और के लिए सही फ़ॉन्ट स्थापित करेगा आईओएस 9.
धन्यवाद @ स्विफ्ट के लिए महान उत्तर पोस्ट करने के लिए धन्यवाद। उद्देश्य सी है अगर कोई चाहता है तो इसी प्रकार का उत्तर है। 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. आईओएस 8 और आईओएस 9
- 2. आईओएस 8 और आईओएस 9
- 3. आईओएस 8/9
- 4. आईओएस 7 और आईओएस 9
- 5. आईओएस 10 और आईओएस 9
- 6. आईओएस 8, आईओएस 9, आईओएस 10, और आईओएस 11 पर यूआईटीएबीबार की ऊंचाई क्या है?
- 7. आईओएस 9
- 8. आईओएस 9
- 9. आईओएस 9
- 10. आईओएस 9
- 11. आईओएस 8 पर ऑटो लेआउट त्रुटि लेकिन आईओएस 9
- 12. आईओएस 9
- 13. आईओएस 9
- 14. आईओएस 9
- 15. आईओएस 9
- 16. आईओएस 9
- 17. आईओएस 9
- 18. आईओएस 9
- 19. आईओएस 9
- 20. आईओएस 9
- 21. सेटिंग्स.बंडल आईओएस आईओएस 8
- 22. आईओएस 8
- 23. आईओएस 9
- 24. आईओएस 9
- 25. आईओएस 9
- 26. आईओएस 9
- 27. स्विफ्ट और आईओएस 8
- 28. आईओएस 9 - प्रकार '(स्ट्रिंग)'
- 29. आईओएस 9 बाधा त्रुटि
- 30. एक्सकोड 7 और आईओएस 9
'+ systemFontOfSize: वजन:' आईओएस 8.2 और बाद में उपलब्ध है। –
@ValentinShamardin इसके बारे में चिंता न करें, विधि आईओएस 8 के बाद से थी। इसे 8.2 में सार्वजनिक एपीआई के रूप में उजागर किया गया था, लेकिन आप इसका उपयोग कर सकते हैं। –