2011-08-08 11 views
9

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

अब मैं यह कर रहा हूं, और आलसी प्रोग्रामर होने के नाते, मैं पहले से ही लिखे गए कोड का पुन: उपयोग करने की कोशिश कर रहा हूं, मुझे लगता है कि मैं इसे अधिकतर पुन: उपयोग कर सकता हूं - निश्चित रूप से सभी मॉडल - - लेकिन हमेशा कुछ छोटी चीज होती है जिसे मुझे नियंत्रक वर्ग पर संशोधित करना होता है। या, UI_USER_INTERFACE_IDIOM() पर लगातार जांच है जो मुझे कोड गंध की तरह लगता है।

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

तो, मैं समुदाय से पूछता हूं। यह सुनिश्चित करने के लिए कुछ अच्छा अभ्यास क्या है कि मेरा ऐप न्यूनतम बदलावों के साथ सार्वभौमिक हो सकता है?

उत्तर

5

मान लिया जाये कि आप MVC तरीके का अनुसरण किया, एम स्पष्ट रूप से (और M⇔C संबंध के सबसे) iPhone और iPad के बीच साझा किया जाता है।

विभिन्न यूआई का मतलब अलग-अलग वी और विभिन्न V⇔C है।

कुछ विचार:

  • आप इंटरफ़ेस बिल्डर में कर रहे हैं, 1 iPhone यूआई के लिए निब और iPad के लिए एक और एक का उपयोग करें।

  • विचारों की अच्छी समझ है ऑटोरेसाइजिंग मास्क। सही मूल्य के साथ, आप अक्सर अपने व्यू लेआउट कोड के एक बड़े हिस्से से छुटकारा पा लेते हैं।

  • जितना संभव हो सके, अपने विचारों को मैन्युअल रूप से स्थितिबद्ध करने या कस्टम दृश्यों को चित्रित करते समय पूर्ण मानों का उपयोग न करें। उदाहरण के लिए myView.frame = CGRectMake(0,0, 320, 480) आईपैड पर अच्छा नहीं कर सकता है।

  • आप ~ipad या ~iphone साथ कम से कम आईओएस 3.2, प्रत्यय अपने डिवाइस-विशिष्ट संसाधन के विकास लक्ष्य है। आप उन्हें अपने सामान्य नाम का उपयोग करने में सक्षम होंगे।

उदाहरण:
AwesomeView~ipad.xib और AwesomeView~iphone.xib के साथ, आप [[AwesomeViewController alloc] initWithNibName:@"AwesomeView" bundle:nil] लिख सकते हैं।
छवियों के लिए यही बात (foo~ipad.png और foo~iphone.png, तो [UIImage imageName:@"foo"])

मैं यकीन है कि इन बातों का सबसे स्पष्ट कर रहे हैं, लेकिन वे काफी समय की बचत हो गया मेरे लिए गए हैं।

2

मुझे जो मिला वह यह है कि मैं एक ही ऐप के लिए आईफोन बनाम आईपैड के लिए काफी अलग यूआई के साथ समाप्त होता हूं। स्क्रीन अचल संपत्ति और अन्य पहलुओं में अंतर वास्तव में विभिन्न दृष्टिकोणों के लिए पूछता है। यदि कुछ और नहीं है तो मैं आईफोन के लिए आईपैड के लिए कम अलग विचारों (स्क्रीन) के साथ समाप्त होता हूं। (मैं रास्ते में हेलीकॉप्टर में एक सवारी प्यार करता हूँ)।

+1

यही मुझे डर है: कि एक सार्वभौमिक ऐप वास्तव में दो ऐप्स भर जाता है, केवल उनके बीच मॉडल, जो एक रखरखाव दुःस्वप्न बन जाता है। – ageektrapped

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