12

मैं कोड में अपने व्यू कंट्रोलर को लेआउट करने में सक्षम होना चाहता हूं लेकिन इंटरफ़ेस बिल्डर में प्रदर्शित लेआउट देखें।आईबी डिज़ाइन करने योग्य UIViewController

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

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

किसी भी सुझाव के लिए धन्यवाद।

उत्तर

1

मुझे आईबीडी डिजाइन करने योग्य का उपयोग कर व्यू कंट्रोलर लेआउट का परीक्षण करने के लिए एक समाधान मिला।

कोड में आपके विचार नियंत्रक आप सामान्य रूप से

2.Create एक IBDesignable UIView उपवर्ग करते हैं और एक subview के रूप में देखें नियंत्रक के दृश्य जोड़ते हैं वह बस के रूप में 1.Layout

3.Create एक xib और उपवर्ग आप 2

चरण 2 में विस्तार करने के लिए चरण में बनाए गए करने के लिए अपने को देखने के वर्ग निर्धारित करते हैं, अपने IBDesignable के initWithFrame: विधि

- (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; MyViewController *viewController = [MyViewController alloc] init]; viewController.view.frame = self.bounds; [self addSubview:viewController.view]; return self; }

दिखाई दे सकता है

इस initWithFrame विधि से परे, आपके सभी लेआउट कोड को आपके व्यू कंट्रोलर द्वारा नियंत्रित किया जा सकता है। आप अपने व्यू कंट्रोलर को डेटा को अपने सबव्यू के फॉरफॉर इंटरफेसबिल्डर विधि में पास करना चाह सकते हैं।

0

लेआउट के लिए आपके पास एक्सकोड में कक्षाएं हैं, आपको पहले अपने त्वरित खेल के मैदान में आयात करने की आवश्यकता है: here अधिक जानकारी।

ऐसा करने के बाद, यह "मुश्किल" हिस्सा आया है। आदेश में करने के लिए अपने कैसे वर्ग डीबग करने और खेल के मैदान में दृश्यमान, अपने वर्ग प्रोटोकॉल का पालन करना चाहिए: CustomPlaygroundQuickLooacable:

यहाँ WWDC से एक त्वरित उदाहरण है:

इस प्रोटोकॉल को लागू करने से , आप मूल रूप से खेल के मैदान को बता रहे हैं कि आप कैसे हॉल क्लास का प्रतिनिधित्व करते हैं। मुझे अभी तक कोई बेहतर समाधान पसंद नहीं आया है।

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