2016-05-19 6 views
7

मैं स्विफ्ट 2.2 में एक ऐप विकसित कर रहा हूं। अब मैं एक निश्चित दृश्य के लिए बैक बटन फ़ॉन्ट और रंग बदलना चाहता हूं। प्रश्न में दृश्य में नेविगेशन नियंत्रक है क्योंकि यह मूल नियंत्रक है।स्विफ्ट चेंज फ़ॉन्ट और बैक बटन का रंग

मैं अपने ViewController

self.navigationController!.navigationItem.backBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal) 
self.navigationItem.backBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal) 

न तो की viewDidLoad में निम्नलिखित लाइनों के दोनों चल कोशिश की है किसी भी त्रुटि फेंकता है, लेकिन यह वापस बटन को कोई फर्क नहीं पड़ता। मैंने इन दोनों

self.navigationController!.navigationItem.leftBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal) 
self.navigationItem.leftBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal) 

हालांकि यह एक त्रुटि फेंकता है (त्रुटि अनचाहे त्रुटि)। मुझे नेविगेशन बार बैक बटन के फ़ॉन्ट और रंग को सही तरीके से कैसे बदलना चाहिए? लगता है जैसे मैं सही आइटम को संशोधित नहीं कर रहा हूँ ...

+0

सेट अपने navigationBar का 'viewWillAppear में tintColor:' विधि और इसे वापस सेट 'viewWillDisappear में: AppDelegate में' 'didFinishLaunchingWithOptions' विधि – TheTiger

+0

उपयोग कोड आप पूरे एप्लिकेशन –

उत्तर

11

आप अपने didfinishlaunchingwithoptionappdelegate में लिखने में परोक्ष तो बटन बार एक ही रंग सेट करना चाहते हैं,

UINavigationBar.appearance().tintColor = UIColor.whiteColor() //your desired color here 

अद्यतन:

appdelegae में रखते,

UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal) // your textattributes here 

अद्यतन 2:

UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UINavigationBar.classForCoder()]).setTitleTextAttributes(["attribute" : "value"], forState: .Normal) 

आशा इस में मदद मिलेगी :)

+0

हाँ यह काम करने लगता है ठीक है, धन्यवाद! मैं फ़ॉन्ट को वैश्विक स्तर पर भी सेट करना चाहता हूं, लेकिन यह केवल शीर्षक फ़ॉन्ट को प्रभावित करता है, न कि बैक बटन फ़ॉन्ट ... कोई विचार? –

+0

उत्तर में मेरा अपडेट देखें – Lion

+0

जो मैंने किया है, वह केवल नौसेना के शीर्षक को प्रभावित करता है, बैक बटन नहीं :( –

2

उपयोग निम्न कोड:

navigationController?.navigationBar.barTintColor = UIColor.purpleColor() 
    navigationController?.navigationBar.tintColor = UIColor.whiteColor() 

परिवर्तन रंग अपनी जरूरत

+0

में प्रभाव चाहते हैं, तो मैं कोशिश की है कि लेकिन इससे कोई फर्क नहीं पड़ता :( –

+0

यह मेरे मास्टर कंट्रोलर में काम करता है लेकिन मेरे विस्तार नियंत्रक में नहीं। यह कैसे हो सकता है? –

+0

इस कोड का उपयोग AppDelegate.m फ़ाइल में किया गया थाफिनिश लांचिंगविथऑप्शन यह आपके लिए निश्चित रूप से काम करता है –

3

कस्टम बटन बनाने और इसे बनाने के रूप में आप चाहते हैं और जोड़ने के अनुसार वापस जाने के लिए कार्रवाई।

func addBackBarButtonOnNavigationBar(){ 
    // add image here 
    let searchImage:UIImage = UIImage(named: "back button image")! 

    var backBtn:UIBarButtonItem = UIBarButtonItem(image: searchImage, style: UIBarButtonItemStyle.Plain, target: self, action: #selector(classname.buttonActionMethodName(_:))) 
    backBtn.tintColor = UIColor.lightGrayColor() 
    if let font = UIFont(name: "AvenirNext", size: 15) { 
    backBtn.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal) 
} 
    self.navigationItem.leftBarButtonItem = backBtn 

} 

func buttonActionMethodName(){ 
    self.navigationController!.popViewControllerAnimated(true) 

} 
4

मुझे लगता है कि आप अपने वास्तविक कुलपति से पहले कुलपति में यह बदलना चाहिए। अपने prepareForSegue विधि में

let item = UIBarButtonItem(title: "Text goes here", style: .Plain, target: self, action: #selector(self.navigationController?.popViewControllerAnimated(_:))) 

item.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Helvetica-Bold", size: 23)!], forState: .Normal) 

navigationItem.backBarButtonItem = item 

: UINavigationItem

संपादित करें:: को देखो उदाहरण के लिए आप लिख सकते हैं।

+0

काम करता है तो क्या आप अपने प्रस्तावित समाधान को और अधिक स्पष्ट रूप से और संभवतः अधिक विवरण में समझा सकते हैं? – werediver

9

स्विफ्ट 3.0 जवाब (शेर के जवाब के आधार पर):

let newFont = UIFont(name: "Avenir Next", size: 16.0)! 
let color = UIColor.white 

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UINavigationBar.classForCoder() as! UIAppearanceContainer.Type]).setTitleTextAttributes([NSForegroundColorAttributeName: color, NSFontAttributeName: newFont], for: .normal) 

उन है कि पहले से ही अपने नव सलाखों के अन्य भागों नहीं बल्कि वापस बटन को अनुकूलित करने में कामयाब रहे के लिए एक इलाज, काम करता है!

0

स्विफ्ट 4

AppDelegate में

।तेज

UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 15)!], for: .normal) 
संबंधित मुद्दे