2011-06-17 12 views
5

के माध्यम से बनाते समय मैंने आईफोन विकास के साथ शुरुआत की, मैंने अपने आवेदन में विचार बनाने के लिए इंटरफ़ेस बिल्डर का उपयोग करना पसंद किया। समय के साथ मैंने कोड कोड के माध्यम से आवेदन बनाने का विकल्प माना जो मुझे वास्तव में आरामदायक काम करने में सहज महसूस करता है।
अब, जब मैं अपने यूजर इंटरफेस को बनाने के दोनों तरीकों को जानता हूं, तो मुझे संदेह है कि किस तरह का पालन करना है। मैं सोच रहा हूं कि आईबी और कोड का उपयोग कहां करें। मैं अपने आवेदन से शुरू करने से पहले कैसे पता लगा सकता हूं, मुझे किस तरह से अपना UI बनाना चाहिए?दो के बीच चयन - इंटरफ़ेस बिल्डर या कोड

+2

बिल्कुल मुझे कैसा लगता है ... अब कोड में ज्यादातर चीजें कर रहे हैं और आईबी पर वापस लौटना शुरू कर देते हैं। – Eiko

उत्तर

10

ऐसे कई कारक हैं जो आपकी पसंद को प्रभावित कर सकते हैं। यह व्यक्तिगत स्वाद के लिए नीचे आ सकता है, लेकिन इंटरफ़ेस बिल्डर का उपयोग करने के कुछ फायदे हैं।

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

एक अन्य महत्वपूर्ण बात यह है कि यदि आप इंटरफेस बिल्डर में नियंत्रण बना सकते हैं और लेआउट कर सकते हैं, तो इसका मतलब है कि कम कोड आपके व्यू कंट्रोलर में है। कम कोड हमेशा एक अच्छी बात है (कम कीड़े, बनाए रखने में आसान, ...)।

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

ऐसी स्थितियां जहां आप कोड में पूरी तरह से नियंत्रण बनाएंगे, जब आपको गतिशील रूप से कई ऑब्जेक्ट्स बनाने की आवश्यकता होती है, उदाहरण के लिए फोटो गैलरी के लिए थंबनेल बटन, या यदि आपके पास कस्टम लेआउट आवश्यकताएं हैं।

उदाहरण के लिए, यदि आप एक लेबल जिसकी ऊंचाई कार्यावधि में गतिशील है, और आप इसे नीचे नियंत्रण (ध्यान में इसकी ऊंचाई लेने) का एक समूह लेआउट करना चाहते हैं, जो केवल कोड में किया जा सकता (अद्यतन: आईओएस 6 का ऑटो-लेआउट अब यह कर सकता है)। आप कोड में सब कुछ बना सकते हैं और लेआउट कर सकते हैं, या फिर भी आप इंटरफ़ेस बिल्डर का उपयोग करके नियंत्रण बना सकते हैं और केवल उन्हें XIB में मनमानी स्थिति दे सकते हैं, जिन्हें आप कोड में डालते समय संशोधित होते हैं। यह मेरी XIBs में से कुछ में इस को देखने के लिए असामान्य बात नहीं है:

enter image description here

शीर्ष के साथ बटन बनाया है और आईबी में पूरी तरह से बाहर रखा जा सकता है, लेकिन नीचे दी गई छवि विचारों उनके चित्र और पदों पर गणना की जा करने की जरूरत है क्रम। इसलिए हम उन्हें XIB में मनमानी स्थिति देते हैं।कुछ को यह बदसूरत मिल सकता है, लेकिन यह छवि दृश्य बनाने और अपनी संपत्तियों को स्थापित करने के लिए कोड लिखने पर समय और प्रयास बचाता है। फिर, कम कोड एक अच्छी बात है।

अन्य बार आप कोड का उपयोग करना चाहते हैं कुछ स्पष्ट गुणों को सेट कर रहा है। आइए मान लें कि आपके पास एक छवि दृश्य है जिसे स्पर्श ईवेंट प्राप्त करने की आवश्यकता है क्योंकि इसमें कुछ इशारा पहचानकर्ता शामिल हैं। आपको "उपयोगकर्ता इंटरैक्शन सक्षम" संपत्ति को सत्य पर सेट करने की आवश्यकता है। कोड में ऐसा करना बेहतर हो सकता है क्योंकि आवश्यकता अधिक दिखाई दे रही है और आप उचित टिप्पणियां छोड़ सकते हैं कि आप संपत्ति क्यों सेट कर रहे हैं। अगर आप इंटरफेस बिल्डर में सेटिंग कर सकते हैं तो सेटिंग को 'खोना' मुश्किल है यदि आपको विचारों का एक गुच्छा हटाना और फिर से बनाना है।

+0

ग्रेट उत्तर माइक। मुझे पता है कि अन्य विचार बनाने के लिए आईबी और कोड दोनों का पुन: उपयोग किया जा सकता है। और दोनों को किसी भी तरह बदला जाना चाहिए। ऐसी स्थिति में जहां आपके समान विचार हैं, आप किस दृष्टिकोण से सुझाव देते हैं कि मुझे विचार करना चाहिए? – Nitish

+0

आम तौर पर, मैं आपके मूल्यांकन से सहमत हूं। स्टेटिक लेआउट दृश्य लेआउट की दक्षता बढ़ने से लाभान्वित होते हैं। हालांकि, यह कम कोड नहीं है। यह सिर्फ उस कोड को लिया गया है और इसे एक विशाल एक्सएमएल फ़ाइल में डंप किया गया है, जिसमें प्रारूप नहीं है जिसमें कोई डीटीडी या स्कीमा नहीं है। अगर ऐप्पल को आईबी को मूल रूप से बदलना चाहिए और अपने प्रोजेक्ट के एक्सआईबी प्रारूप का समर्थन नहीं करना है, तो आप बाध्य हैं। हां, शायद सैद्धांतिक रूप से, लेकिन उनके प्रोजेक्ट की जीवन शक्ति का मूल्यांकन करने वाले किसी भी व्यक्ति को कुछ संदेह के साथ बंद स्वरूपों को देखना चाहिए। – poetmountain

1

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

+0

यदि मेरा यूआई बनाने के लिए उपयोग किया जाने वाला कोड प्रयोग योग्य है, तो क्या मुझे कोड के लिए जाना चाहिए? क्योंकि एक ही समय में आईबी का पुन: उपयोग किया जा सकता है। – Nitish

+0

मैंने टेबल कोशिकाओं के लिए आईबी का उपयोग करके बहुत अधिक रोक दिया है (और लॉगिन से या स्क्रीन के बारे में अधिकतर स्थिर स्क्रीन को छोड़कर इसे टालने के लिए प्रवृत्त होते हैं)। यह कुछ चीजों को आसान बना सकता है, लेकिन यदि (उदाहरण के लिए) आपके पास विभिन्न प्रकार की सामग्री के लिए थोड़ा अलग ऊंचाइयों/लेआउट के साथ कई समान कोशिकाएं हैं, तो आप पाठ की रेखाओं की संख्या के आधार पर गतिशील लेआउट करना चाहते हैं, और कभी-कभी ग्राहक आपको फ़ॉन्ट आकार/सेल ऊंचाइयों को बदलने के लिए कहता है, कोड में लेआउट करना प्रयास के लायक है। –

2

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

कहा जा रहा है कि, मैं इस तथ्य के कारण इंटरफ़ेस को तेज़ी से कोड करने के तरीके के बारे में और कम से कम सीखता हूं कि उन्हें अधिक लचीला होने की आवश्यकता हो सकती है या इसके पीछे मॉडल के आधार पर UI तत्वों की एक चर संख्या की आवश्यकता हो सकती है ।

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