2016-12-22 7 views
6

के लिए डिफ़ॉल्ट टेक्स्ट रंग मैं अपने ऐप में सभी UILabels के लिए डिफ़ॉल्ट टेक्स्ट रंग सेट करना चाहता हूं। सभी लेबल अभी भी लाल कर रहे हैं -सभी UILabels

UILabel.appearance().textColor = UIColor.red 

यह काम करता है, लेकिन जब मैं अपने स्टोरीबोर्ड में एक विशेष लेबल के लिए कुछ अन्य रंग सेट करना चाहते हैं, यह नहीं किया जा सकता: मैं इस पाया।

क्या सभी यूआईएलएबल्स के लिए स्टोरीबोर्ड में सेट करके डिफ़ॉल्ट टेक्स्ट रंग को परिभाषित करना संभव है और फिर स्टोरीबोर्ड (कोड में नहीं) में कुछ UILabels ALSO के लिए इसे बदलना संभव है? या उपस्थिति API का उपयोग करके कोड में डिफ़ॉल्ट रंग सेट करें और स्टोरीबोर्ड में कुछ लेबल के लिए इसे बदलें?

+1

अगर यह संभव है पता नहीं है के लिए बेहतर है, लेकिन आप स्टोरीबोर्ड में क्रम विशेषता ('textColor') को परिभाषित करते हुए की कोशिश की है आप पर निर्भर है? यह –

+0

उपस्थिति के बाद लागू किया जा सकता है मैंने UILabel के लिए @IBInspectable property 'color' के साथ एक्सटेंशन बनाया है। मैं इसे इंटरफेसबिल्डर में उपयोग करता हूं और हरे रंग में रंग सेट करता हूं, लेकिन जब मैं कोड चलाता हूं तो मेरा लेबल अभी भी लाल –

+0

@ एड्रियनबॉस्की, सबकलास लेबल है क्योंकि विस्तार का उपयोग करके आपको विस्तार विधियों को स्वयं को कैल करना होगा। नीचे दिए गए उत्तर में दिए गए सबक्लासिंग में परिवर्तन स्वचालित हो जाएंगे। –

उत्तर

7

SubClass आप CustomLabel.swift के साथ लेबल करते हैं। आप IBDesignable संपत्ति नामित का उपयोग कर पाठ का रंग सेट कर सकते हैं के रूप में txtColor

नीचे कोड काम उदाहरण

import UIKit 

    @IBDesignable class CustomLabel: UILabel { 

     @IBInspectable var txtColor: UIColor = UIColor.grayColor() { 
      didSet { 
       self.textColor = txtColor 
      } 
     } 

     func setup() { 
      self.textColor = txtColor 
     } 

     override func awakeFromNib() { 
      setup() 
     } 

     override func prepareForInterfaceBuilder() { 
      setup() 
     } 

    } 
+0

मैंने UILabel के लिए @IBInspectable property 'color' के साथ एक्सटेंशन बनाया है। मैं इसे इंटरफेसबिल्डर में उपयोग करता हूं और हरे रंग में रंग सेट करता हूं, लेकिन जब मैं कोड चलाता हूं तो मेरा लेबल अभी भी लाल –

+0

है, ठीक है, हालांकि यह काम करता है। उप-वर्ग बनाने के बिना ऐसा करने का कोई तरीका नहीं है? –

+0

कोई अन्य तरीका नहीं है –

2

वहाँ भी क्या मुहम्मद सुझाव के लिए एक विकल्प है। वैकल्पिक यूआईपीपेरेंस प्रॉक्सी का उपयोग करना है, लेकिन उन वर्गों को निर्दिष्ट करें जहां इसे लागू किया जाएगा।

उस मामले में, आप इसे इस तरह का प्रयोग करेंगे:

UILabel.appearanceWhenContainedInInstancesOfClasses([MyViewController.self, MyotherViewController.self]).textColor = UIColor.red 

ऊपर हालांकि, केवल आप ही कुछ कक्षाओं में textcolor अपने आप स्थापित करने के लिए अनुमति होगी। उन लोगों में जहां प्रॉक्सी सक्षम होने के लिए सेट है, आप टेक्स्ट रंग सेट करने में सक्षम नहीं होंगे।

यह चयन करने के लिए जो दृष्टिकोण अपने मामले

+0

के साथ काम करता है मेरे आवेदन में मेरे पास बहुत सारे व्यू कंट्रोलर हैं, इसलिए मुझे एक वैश्विक रंग सेट करना होगा, और केवल कुछ स्थानों पर मैंने एक और –

+0

सेट किया है जैसा मैंने कहा था, यह आपकी आवश्यकताओं पर निर्भर करता है। आपके मामले में स्पष्ट रूप से यह एक आदर्श समाधान नहीं है, इसलिए मुहम्मद का समाधान आपको बेहतर बनाएगा – Lefteris

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