11

के माध्यम से MFMailComposeViewController में स्टेटस बार रंग बदलें, मैं नेविगेशन बार बटन, नेविगेशन बार टिंट रंग और टेक्स्ट रंग का रंग बदलने की कोशिश कर रहा हूं, हालांकि मुझे कहीं भी नहीं मिल रहा है। MFMailComposeViewController को UIActivityViewController के माध्यम से सक्रिय किया जा रहा है और मैंने कुछ अलग-अलग तरीकों की कोशिश की है जो पहले काम कर चुके हैं (हालांकि UIActivityViewController के माध्यम से नहीं)।UIActivityViewController

यह मेरे वर्तमान कोड है:

UINavigationBar.my_appearanceWhenContainedIn(MFMailComposeViewController).barTintColor = UIColor.blackColor() 

यह here सुझाव दिया गया था। मैंने यह भी कोशिश की है:

activityVC.navigationController?.navigationBar.tintColor = UIColorFromRGB(0x0096FF) 
    activityVC.navigationController?.navigationBar.barTintColor = UIColor.whiteColor() 

मैं स्टेटस बार रंग बदलने की भी तलाश कर रहा हूं।

किसी के पास कोई विचार है?

अद्यतन:

मैं बटन और शीर्षक के लिए नेविगेशन पट्टी समस्याओं का हल नहीं, लेकिन अभी भी स्थिति पट्टी के लिए एक समाधान की तलाश में। ऐसा करने से काम नहीं करता है:

self.presentViewController(activityVC, animated: true, completion: {() in 
     UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true) 
    }) 

उत्तर

0

अपने अनुप्रयोग प्रतिनिधि फ़ाइल पर जाएं और अपने didFinishLaunchingWithOptions ये पंक्तियां जोड़ें :) यह सब दृश्य नियंत्रकों के लिए स्थिति पट्टी रंग अद्यतन करेगा।

UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent 

साथ ही अपने Info.plist फ़ाइल में "दृश्य नियंत्रक आधारित स्थिति पट्टी उपस्थिति" नामक एक नया कुंजी जोड़ सकते हैं और मान सेट "नहीं"

अद्यतन करने के लिए

अलग सेट करने के लिए विचारों के बीच शैलियों को आजमाएं:

override func preferredStatusBarStyle() -> UIStatusBarStyle { 
return UIStatusBarStyle.LightContent 
} 

फिर आप जो हासिल करने की कोशिश कर रहे हैं उसके आधार पर आप प्रकाश या अंधेरा वापस कर सकते हैं :)

+0

मेरे पास यह है, लेकिन मुझे स्टेटस बार शैली को दृश्य नियंत्रकों के बीच अलग होने की आवश्यकता है। – user3746428

-1

MFMailComposeViewController अपनी खुद की स्टेटस-बार शैली सेट करता है, जिसकी आपके पास पहुंच नहीं है। ऐसा करने के लिए आप शायद कुछ निजी एपीआई में खोद सकते हैं, लेकिन फिर ऐप द्वारा निश्चित रूप से आपका ऐप खारिज कर दिया जाएगा।

हालांकि एक साइड नोट के रूप में, आपको ऐप्पल के बारे में कुछ भी नहीं बदला जाना चाहिए UIViewController (ओं)। वे इस तरह से देखते हैं क्योंकि वे मूल ऐप के बाद स्टाइल हैं। इसका मतलब उपयोगकर्ताओं को एक ऐप में स्थान और दिशा की भावना देना है। ऐप्पल भी आपके ऐप को अस्वीकार कर सकता है, क्योंकि आपने अपनी सामग्री बदल दी है।

+0

हालांकि यह मामला हो सकता है, मेरे पास कई अन्य ऐप्स अनुमोदित हैं जो बिल्कुल वही काम करते हैं, इसलिए मैं इसे अस्वीकार करने के बारे में बहुत चिंतित नहीं हूं। – user3746428

1

iOS8 के लिए आप barTintColor का उपयोग स्थिति

NSString *invitationText = @"test"; 
    [UINavigationBar appearance].barTintColor = [UIColor whiteColor]; 
    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init]; 
    mc.mailComposeDelegate = self; 
    [mc setSubject:@"Test "]; 
    [mc setMessageBody:invitationText isHTML:YES]; 
    [self presentViewController:mc animated:YES completion:NULL]; 
4

का रंग बदलने के लिए आप MFMailViewController उपवर्ग और उसके viewWillAppear विधि

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent 
    self.navigationController.navigationBar.translucent = false 
    self.navigationController.navigationBar.opaque = false 
    self.navigationController.navigationBar.barTintColor = UIColor.blueColor() 
} 

ओवरराइड कर सकते हैं जब से तुम ही स्थिति पट्टी lightcontent जब होना चाहता हूँ MFMailComposeViewController सक्रिय है, आपको

UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent 
नहीं डालना चाहिए

आपके ऐप प्रतिनिधियों में FinishLoading किया था। यह आपके पूरे एप्लिकेशन के लिए प्रकाश सामग्री सेट करेगा।

+0

यदि आप अपनी समस्या हल करते हैं तो क्या आप इसे सही उत्तर के रूप में चिह्नित कर सकते हैं? – MarkHim

संबंधित मुद्दे