मैं एक एंड्रॉइड डेवलपर हूं जो एक्सकोड पर मेरे हाथ की कोशिश कर रहा है और अब तक अप्रिय रहा है।एक्सकोड स्विफ्ट व्यू रैप सामग्री
- UIImageView (एक आइकन के लिए)
- UILabel (खिताब के लिए)
- UILabel (सामग्री के लिए) : मुझे क्या करना कोशिश कर रहा हूँ तीन उप दृश्य दिखाई देते हैं कि एक कस्टम दृश्य है
मुझे यह चाहिए कि सामग्री लेबल की ऊंचाई बढ़ती है और उस पाठ को लपेटने के लिए घट जाती है (जैसे एंड्रॉइड के wrap_content
)। और फिर, मैं चाहता हूं कि कस्टम दृश्य भी तीनों उप दृश्यों को लपेटने के लिए बढ़े और सिकुड़ें।
हालांकि, मैं नहीं कर सकता, मेरे जीवन के लिए, यह पता लगाएं कि ये ऑटो लेआउट/बाधाएं कैसे काम करती हैं।
01) मैं अपने यूआईएलएबल की ऊंचाई को अपने निहित पाठ से मेल खाने के लिए कैसे बढ़ा सकता/सकती हूं?
02) मैं अपने कस्टम दृश्य की ऊंचाई को अपने निहित उप दृश्यों से मेल खाने के लिए कैसे बढ़ा/घटाना चाहूंगा?
override func layoutSubviews() {
super.layoutSubviews()
img_icon = UIImageView()
txt_title = UILabel()
txt_content = UILabel()
img_icon.backgroundColor = Palette.white
img_icon.image = icon
txt_title.text = title
txt_title.textAlignment = .Center
txt_title.font = UIFont(name: "Roboto-Bold", size:14)
txt_title.textColor = Palette.txt_heading1
txt_content.text = content
txt_content.textAlignment = .Center
txt_content.font = UIFont(name: "Roboto-Regular", size:12)
txt_content.textColor = Palette.txt_dark
txt_content.numberOfLines = 0
txt_content.preferredMaxLayoutWidth = self.frame.width
txt_content.lineBreakMode = NSLineBreakMode.ByWordWrapping
self.backgroundColor = Palette.white
addSubview(img_icon)
addSubview(txt_title)
addSubview(txt_content)
/*snip img_icon and txt_title constraints*/
let txt_content_x = NSLayoutConstraint(item: txt_content, attribute: .CenterX, relatedBy: .Equal, toItem: self, attribute: .CenterX, multiplier: 1, constant: 0)
let txt_content_y = NSLayoutConstraint(item: txt_content, attribute: .Top, relatedBy: .Equal, toItem: self, attribute: .Top, multiplier: 1, constant: 80)
let txt_content_w = NSLayoutConstraint(item: txt_content, attribute: .Width, relatedBy: .Equal, toItem: self, attribute: .Width, multiplier: 1, constant: 0)
let txt_content_h = NSLayoutConstraint(item: txt_content, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 40)
txt_content.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activateConstraints([
txt_content_x,
txt_content_y,
txt_content_w,
txt_content_h
])
}
मैं समझता हूँ कि, ऊपर कोड मैं कोशिश की है, मैं ऊंचाई एक निरंतर 40
लिए निर्धारित किया है। यह केवल इसलिए है क्योंकि मुझे नहीं पता कि मैं क्या हासिल करना चाहता हूं।
[संपादित करें]
मैं इससे अधिक या इसके बराबर ऊंचाई बाधा स्थापित करने की कोशिश की है, लेकिन यह सिर्फ Xcode दुर्घटनाओं।
[संपादित करें]
यह Xcode दुर्घटनाओं अगर मैं इसे देखने का प्रयास करें, लेकिन सिम्युलेटर में पूरी तरह से ठीक काम करता है। प्रश्न अब है, क्यों?
मेरे ऊंचाई बाधा है:
let txt_content_h = NSLayoutConstraint(item: txt_content, attribute: .Height, relatedBy: .GreaterThanOrEqual, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 40)
यह सिम्युलेटर में काम करता है और वांछित व्यवहार है। हालांकि, अगर मैं स्टोरीबोर्ड खोलता हूं जिसमें दृश्य होता है, तो यह क्रैश हो जाता है। यह निश्चित रूप से कोड की रेखा है क्योंकि इसे .Equal
पर बदलकर क्रैश को हल करता है।
[संपादित करें]
मेरे अस्थायी ठीक है:
#if TARGET_INTERFACE_BUILDER
//use .Equal for height constraint
#else
//use .GreaterThanOrEqual for height constraint
#endif
इस तरह, यह Xcode क्रैश नहीं होता है और अभी भी तरह से मैं यह सिम्युलेटर पर चाहते हैं बना देता है।
[संपादित करें]
मैं और पूर्व प्रोसेसर जांच हटा दिया क्योंकि मैंने महसूस किया कि वहाँ कोई वास्तविक बात है उस तरह परिभाषित यह अभी भी अब काम करता है। मैं कसम खाता हूं कि मैंने बदल दिया है।
मैं हूं आईओएस विकास को छोड़ने के करीब है क्योंकि इंटरफ़ेस निर्माता बिना किसी कारण के एक्सकोड को क्रैश कर रहा है जब सब कुछ सिम्युलेटर में काम करता है। फिर, मैं कुछ बकवास संपादन करता हूं और यह फिर से ठीक काम करता है।
सलाह, आदमी के लिए धन्यवाद अच्छा का एक बहुत हो जाएगा। मैंने सोचा कि एकमात्र तरीका पसंदीदा चौड़ाई को पर्यवेक्षण की चौड़ाई को प्रोग्रामेटिक रूप से सेट करना था। मैंने इसके बारे में नहीं सोचा था। मेरा एकमात्र मुद्दा यह है कि इंटरफ़ेस बिल्डर और एक्सकोड बार-बार, मनमाने ढंग से काम करना बंद करने का निर्णय लेता है जब तक कि मैं कुछ कोड को स्थानांतरित नहीं करता जिसके आसपास कुछ भी प्रभावित नहीं होता है। यह हर कुछ मिनटों में होता है और मैं एक्सकोड को पुनरारंभ करना जारी रख सकता हूं और यह तब तक मदद नहीं करता जब तक कि मैं "45" से "125" या कुछ यादृच्छिक सामानों की ऊंचाई को बदलने जैसे कुछ कोड को स्थानांतरित करने का निर्णय नहीं लेता। या, जैसा कि मेरे संपादन में देखा गया है, उस मान को चेक जोड़ना जो अस्तित्व में नहीं है और फिर हटा रहा है। –
इसे आज़माएं: http://stackoverflow.com/questions/18933321/deleting-contents-from-xcode-derived-data-folder – ullstrm