2012-01-11 17 views
6

मुझे पता है कि इसी तरह के प्रश्न पहले से ही पूछे गए हैं, लेकिन एक संतोषजनक उत्तर नहीं मिला। तो मैं फिर से यह सवाल जोड़ रहा हूँ।थीम आधारित एप्लिकेशन कैसे बनाएं?

आईफोन एप्लिकेशन में उपयोगकर्ता चयन के आधार पर, मुझे एप्लिकेशन (रंग फ़ॉन्ट पृष्ठभूमि छवियों आदि) के स्वरूप और अनुभव को बदलने की जरूरत है। क्या यह हासिल करने का कोई मानक तरीका है?

एक संभावित समाधान प्रत्येक विषय के लिए xib फ़ाइलों को डुप्लिकेट कर सकता है और इसे चयन के आधार पर लोड कर सकता है। क्या यह एक अच्छा दृष्टिकोण है? मुख्य रूप से क्योंकि xib प्रतियों के लिए दुकानों और कार्यों को तारों को तारना एक अनावश्यक कार्य लगता है।

मैं इस संदेह के लिए विशेषज्ञ सुझाव देखना चाहता हूं। अग्रिम में किसी भी मदद के लिए धन्यवाद।

-mia

उत्तर

0

गैर XIB मार्ग

के लिए रंग: आईओएस 5 नए उपस्थिति एपीआई उजागर करता है। टिंटकॉलर या पृष्ठभूमि रंग सेट करने पर अधिकांश UI तत्वों में विकल्प होता है। शायद ही कभी एक पृष्ठभूमि छवि भी।

फ़ॉन्ट: हमेशा बदलना सक्षम था, लेकिन आप इसे एनिमेट नहीं कर सके।

पृष्ठभूमि छवि: आपके मुख्य UIView में पृष्ठभूमि छवि के लिए विकल्प होना चाहिए, या यदि यह विफल हो जाता है, पैटर्न पैटर्न के साथ पृष्ठभूमि रंग।

+0

यह चयन के आधार पर रंग गतिशील रूप से सेटिंग सेट कर रहा है। ठीक है, लेकिन मैं विषयों या शैलियों जैसे एक कुशल विकल्प की तलाश में हूं जहां मैं थीम को गतिशील रूप से एक ही समय में स्विच कर सकता हूं, मुझे कोड या डुप्लिकेट निब्स में स्पष्ट रूप से संभाल नहीं लेना पड़ता है। – mia

+0

[UIButton setTintColor: [UIColor somecolor]]; आपको अपने आप को सब कुछ संभालना है। प्रत्येक 'नई शैली' के लिए कुछ प्रीसेट रंग मानों के साथ कुछ विधियां बनाएं जैसे आप इसे – CodaFi

0

थीम आधारित एप्लिकेशन आईओएस एप्लिकेशन को लागू करने का सर्वोत्तम तरीका (~ xib मार्ग का उपयोग नहीं)। आपको build.xml फ़ाइल बनाना चाहिए जो विषयों के सभी टुकड़ों को संतुष्ट करेगा। आपको अपना लेआउट समान रखना चाहिए और आप उपयोगकर्ताओं के pref के अनुसार उस लेआउट में छवियों, शैली, फ़ॉन्ट्स, लैंग, विचारों को बदल सकते हैं। ऐसा करके आप किसी भी कोड को डुप्लिकेट नहीं कर रहे हैं और आप अपने आवेदन से सर्वश्रेष्ठ प्रदर्शन प्राप्त करेंगे।

+0

कहते हैं क्षमा करें, मैं आपकी व्याख्या को समझ नहीं पा रहा हूं। क्या आप थोड़ा और समझा सकते हैं। यह गतिशील आरटी भी नहीं है? इसका मतलब है कि जब प्रोग्राम चालू होता है और उपयोगकर्ता चल रहा है तो थीम स्विच नहीं कर सकता है। – mia

0

जैसा कि कोडाफी ने कहा था, यदि आप आईओएस 5 या इससे अधिक का उपयोग कर रहे हैं, तो आपके पास पहले से ही एक थीमिंग सुविधा है। यह इस तरह काम करता है:

  • कक्षा में प्रोटोकॉल <IAppearanceContainer> जोड़ें।

  • उस संपत्ति को सजाने के लिए जिसे आप UI_APPEARANCE_SELECTOR के साथ बदलना चाहते हैं। उदाहरण:

     
    @interface UINavigationBar : ... <IAppearanceContainer> 
    @property(nonatomic,retain) UIColor *tintColor UI_APPEARANCE_SELECTOR; 
    @end 
    

  • बदलें वर्ग के सभी उदाहरणों का रंग:
     
    [[UINavigationBar appearance] setTintColor:[UIColor redColor]]; 
    

ऊपर के उदाहरण UINavigationBar है, लेकिन यह किसी भी कस्टम वर्ग के साथ काम करेगा। पहले से ही आईओएस 6.1 में समर्थित वस्तुओं को देखने के लिए, प्रलेखन की जाँच करें या निम्न कमांड चलाएँ:

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/UIKit.framework/Headers 

grep -H UI_APPEARANCE_SELECTOR ./* | sed 's/ __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0) UI_APPEARANCE_SELECTOR;//' 

मान लीजिए कि आप मॉड्यूलर विषयों चाहते हैं:

  • सभी फ़ॉन्ट के साथ एक बड़ा plist फ़ाइल लिखें, रंग , संगीत, और क्या नहीं। इनमें से प्रत्येक फाइल एक विषय होगी।
  • फ़ाइल को सिंगलटन के माध्यम से पढ़ें और मूल्यों को प्रत्येक थीम-सक्षम तत्व के लिए [x appearance] setWhatever:<plist value>] जैसी लाइनों के साथ सेट करें।
  • यदि आपके पास एक ही तत्व के उदाहरण हैं जिन्हें विभिन्न तत्वों को प्रदर्शित करने की आवश्यकता है, तो उन छवियों को सिंगलटन के माध्यम से प्राप्त करें।

यह अमित व्यावाहर से टिप कम या कम है। मैंने plist बजाय xml कहा क्योंकि वे पढ़ने के लिए आसान हैं। जब तक आपको वास्तव में नहीं करना है तब तक एनआईबी को डुप्लिकेट न करें।

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