मेरे पास एक मल्टीपल व्यू कंट्रोलर है और मैं सभी का फॉन्ट कलर रेड करना चाहता हूं।
[[UINavigationBar appearance] setFont:[UIFont boldSystemFontOfSize:12.0]];
एक गैर-मान्यता प्राप्त चयनकर्ता त्रुटि फेंक रहा है।
मैं इसे कैसे ठीक करूं?
मेरे पास एक मल्टीपल व्यू कंट्रोलर है और मैं सभी का फॉन्ट कलर रेड करना चाहता हूं।
[[UINavigationBar appearance] setFont:[UIFont boldSystemFontOfSize:12.0]];
एक गैर-मान्यता प्राप्त चयनकर्ता त्रुटि फेंक रहा है।
मैं इसे कैसे ठीक करूं?
जवाबों:
रे वेंडरलिच से:
http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5
// Customize the title text for *all* UINavigationBars
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0],
UITextAttributeTextColor,
[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],
UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"Arial-Bold" size:0.0],
UITextAttributeFont,
nil]];
या यदि आप वस्तु शाब्दिक शैली के साथ पसंद करते हैं:
[[UINavigationBar appearance] setTitleTextAttributes:@{
UITextAttributeTextColor: [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0],
UITextAttributeTextShadowColor: [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8],
UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
UITextAttributeFont: [UIFont fontWithName:@"Arial-Bold" size:0.0],
}];
IOS 7 और निम्नलिखित के लिए संपादित करें
UITextAttributes आईओएस 7 के रूप में पदावनत हैं आप निम्नलिखित का उपयोग कर सकते हैं:
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor colorWithWhite:.0f alpha:1.f];
shadow.shadowOffset = CGSizeMake(0, -1);
[[UINavigationBar appearance] setTitleTextAttributes:@{
NSForegroundColorAttributeName: [UIColor whiteColor],
NSShadowAttributeName: shadow,
NSFontAttributeName: [UIFont fontWithName:@"Arial-Bold" size:15.0f]
}];
if ([navBarInstance respondsToSelector:@selector(appearance)])
पहले करने लायक है क्योंकि यह 5. से नीचे के iOS वर्जन को क्रैश कर देगा
UITextAttributeTextColor
को NSForegroundColorAttributeName
iOS 7
IOS 6 से अधिक या उसके बराबर परिनियोजन लक्ष्य के लिए, आपको NSShadow
इसके बजाय उपयोग करना चाहिए :
NSShadow * shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor lightGrayColor];
shadow.shadowOffset = CGSizeMake(0, -2);
NSDictionary * navBarTitleTextAttributes =
@{ NSForegroundColorAttributeName : [UIColor redColor],
NSShadowAttributeName : shadow,
NSFontAttributeName : [UIFont systemFontOfSize:14] };
[[UINavigationBar appearance] setTitleTextAttributes:navBarTitleTextAttributes];
मैंने AppDelegate.m वर्ग didFinishLaunchingWithOptions विधि में कोड की कुछ पंक्तियों को जोड़कर ऐसा किया: इस कोड का उपयोग करें:
NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:255.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:1.0],UITextAttributeTextColor,
[UIColor clearColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(-1, 0)], UITextAttributeTextShadowOffset, nil];
[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];
इससे मेरा काम बनता है...
यदि आपको स्विफ्ट में ऐसा करने की आवश्यकता है, तो आप इन सेटिंग्स को प्राप्त करने या सेट करने की अनुमति देने के लिए UINavigationBar के लिए एक एक्सटेंशन बना सकते हैं।
extension UINavigationBar {
var titleColor: UIColor? {
get {
if let attributes = self.titleTextAttributes {
return attributes[NSForegroundColorAttributeName] as? UIColor
}
return nil
}
set {
if let value = newValue {
self.titleTextAttributes = [NSForegroundColorAttributeName: value]
}
}
}
var titleFont: UIFont? {
get {
if let attributes = self.titleTextAttributes {
return attributes[NSFontAttributeName] as? UIFont
}
return nil
}
set {
if let value = newValue {
self.titleTextAttributes = [NSFontAttributeName: value]
}
}
}
}
आप इस तरह रंग और फ़ॉन्ट सेट कर सकते हैं:
navigationBar.titleColor = UIColor.redColor()
navigationBar.titleFont = UIFont.systemFontOfSize(12)
titleColor
या तो titleFont
व्यक्तिगत रूप से उपयोग करते हैं । यदि आप उन्हें एक साथ उपयोग करते हैं, तो self.titleTextAttributes
हर बार एक नया मान सेट किया जाएगा जिसे चर कहा जाता है। नया शब्दकोश बनाने पर सेटर को संभवतः दूसरा मूल्य मिल सकता है।
यह एक वैश्विक सेटिंग के बजाय एकल नेविगेशनबार पर एक कस्टम दृश्य सेट करने के लिए इस्तेमाल किया जा सकता है
- (void)updateTitleWithString:(NSString *)title
{
UIView *headerView = [[UIView alloc] initWithFrame:CGRectZero];
[headerView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[headerView setAutoresizesSubviews:YES];
CGFloat headFontSize = (IS_SYSTEM_DEVICE_IPAD ? 25.0f : 19.0f);
UIFont *headFont = [UIFont boldSystemFontOfSize: headFontSize ];
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setLineBreakMode:NSLineBreakByTruncatingTail];
CGSize size = [title boundingRectWithSize:CGSizeMake(190,headFontSize + 6) options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName : headFont, NSParagraphStyleAttributeName : style} context:nil].size;
headerView.frame = CGRectMake(0, 0,size.width,self.navigationController.navigationBar.frame.size.height);
float labelHeight = headFontSize + 6;
float labelYLoc = ( self.navigationController.navigationBar.frame.size.height - labelHeight ) / 2;
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,labelYLoc, size.width,labelHeight)];
label.backgroundColor = [UIColor clearColor];
label.adjustsFontSizeToFitWidth = YES;
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.font = headFont;
label.text = title;
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.4];
label.lineBreakMode = NSLineBreakByTruncatingTail;
label.shadowOffset = CGSizeMake(0,-1);
label.accessibilityLabel = @"<LABEL>";
[headerView addSubview:label];
self.navigationItem.titleView = headerView;
}
कोड की इस लाइन का उपयोग करें
UILabel *badge_Label=[[UILabel alloc]initWithFrame:CGRectMake(5,3, 15, 15)];
badge_Label.backgroundColor=[UIColor redcolor];
badge_Label.font=[UIFont systemFontOfSize:12];
[badge_Label setText:@"20"];
[self.navigationController.navigationBar addSubview:badgelabel];
मुझे लगता है कि यह आपके लिए मददगार होगा।