2011-01-15 11 views
7

मेरे पास एक आईओएस ऐप है जिसे मैं आईओएस/मैक ऐप में परिवर्तित कर रहा हूं। आईओएस संस्करण में, मैंने अपने पाठ के लिए UILabels का उपयोग किया। जाहिर है, मैं मैक पर ऐसा नहीं कर सकता। मैं दो विकल्प देख सकता हूं:UILabel/NSTextView बनाम CATextLayer

विकल्प 1: मैक पर आईओएस और NSTextView पर UILabels का उपयोग करें।

विकल्प 2: दोनों प्लेटफार्मों पर CATextLayers का उपयोग करें, दोनों सामान्य कार्यों को जितना संभव हो उतना संभव बनाने के लिए।

जाहिर है, विकल्प 2 का एक बड़ा फायदा है कि बनाए रखने के लिए कम कोड होगा। मेरा सवाल है - क्या विकल्प 1 में कोई फायदे हैं जिनके बारे में मुझे अवगत होना चाहिए? विशेष रूप से, क्या CATextLayer में कमी है कि UILabel और NSTextView में नहीं है?

संपादित करें: यह एक गेम है। उपयोगकर्ता कभी भी टेक्स्ट में प्रवेश नहीं करता है - लेकिन गेम कुछ आउटपुट करता है, उदाहरण के लिए स्कोर।

उत्तर

10

यह इस बात पर निर्भर करता है कि आप टेक्स्ट और आपके द्वारा लिखे गए एप्लिकेशन के प्रकार का उपयोग कैसे करना चाहते हैं। यदि टेक्स्ट प्राथमिक रूप से स्थिर होगा और UI में लेबल या संवाद के रूप में उपयोग किया जाएगा, तो NSTextField ठीक काम करना चाहिए। यदि आपको फैंसी एनीमेशन की आवश्यकता है, तो CATextLayer अधिक उपयुक्त हो सकता है। यदि आप एक गेम लिख रहे हैं (उदाहरण के लिए सॉलिटेयर), यूआई अधिक समान होंगे और CATextLayer का उपयोग करेंगे और कोरएनीमेशन का अर्थ होगा। यदि आप चैट क्लाइंट जैसे अधिक सामान्य एप्लिकेशन लिख रहे हैं, तो ऐप के साथ इंटरैक्ट करने वाले इंटरफेस और तरीके बहुत अलग हैं, और शायद NSTextFields या NSTextViews का उपयोग करने के लिए अधिक समझदारी होगी।

फिर से, यह सब आपके द्वारा बनाए जा रहे ऐप के प्रकार पर निर्भर करता है, लेकिन यदि यह चैट क्लाइंट उदाहरण की तरह एक अधिक पारंपरिक ऐप है, तो मुझे लगता है कि CATextLayer का उपयोग करके और इंटरफ़ेस में प्रोग्रामेटिक रूप से सब कुछ बनाना है, बल्कि NSTextField का उपयोग करने और एक निब फ़ाइल में सामान डालने से, इसका मतलब कोड की सैकड़ों और लाइनें होगी। दूसरी तरफ, यदि ऐप सॉलिटेयर गेम उदाहरण की तरह है, और परतों और गुणों के आयामों को इस तरीके से परिभाषित किया गया है कि यह ध्यान में रखता है कि ऐप किस प्लेटफॉर्म पर चल रहा है, तो आप शायद बहुत सारे कोड को बचा सकते हैं ।

रिकॉर्ड के लिए, NSTextField शायद UILabel पर निकटतम समकक्ष ऐपकिट क्लास है। NSTextView एक और हेवीवेट क्लास है जिसे आम तौर पर केवल तभी आवश्यकता होती है जब आप पूर्ण पैराग्राफ और अधिक उन्नत टाइपसेट करना चाहते हों। NSTextField हल्का वजन यह है कि वे एक अदृश्य, सिंगल NSTextView (या इसके सुपरक्लास, NSText) फ़ील्ड एडिटर के रूप में साझा करते हैं, जो टेक्स्ट एंट्री के साथ मदद करता है। चूंकि किसी ऐप में केवल एक टेक्स्ट फ़ील्ड एक समय पर ध्यान केंद्रित कर सकता है, इसलिए यह प्रदर्शन को बेहतर बनाने में सहायता के लिए एक सामान्य फ़ील्ड संपादक साझा कर सकता है।

1

एक और कमी है जिसे आपको जागरूक करने की आवश्यकता है (या भविष्य में लोग इस धागे को देखने के लिए आ रहे हैं)। UILabel का उपयोग करते समय, सभी पहुंच UIAccessibility के माध्यम से निःशुल्क आती है। CATextLayer के लिए, आपको अपने आप को सबकुछ संभालना होगा: अंदर स्पर्श करें, एक्सेसिबिलिटी लेबल, अभिगम्यता की सूची में स्थिति ...

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