आईओएस 8.3 सिम्युलेटर और एक्सकोड 6.3.2 का उपयोग करना।एक्सेसरीज़ के साथ आईओएस 8 सेल्फ साइजिंग सेल
मैं आईओएस 8 में स्वयं आकार देने वाली कोशिकाओं तकनीक का उपयोग कर रहा हूं, और जब सेल में कोई सहायक दृश्य नहीं होता है तो यह बहुत ही काम करता है, लेकिन जब सेल में एक्सेसरी व्यू होता है तो टूट जाता है। मैं सेल के अंदर लेबल पर बाधाओं सेट:
तो मैं एक estimatedRowHeight
का उपयोग करें और rowHeight
UITableViewAutomaticDimension
करने के लिए सेट (यहाँ मैं छोड़ते हुए हूँ tableView:numberOfRowsInSection:
, लेकिन यह सिर्फ इस उदाहरण के लिए 3 रिटर्न):
@implementation MyTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.estimatedRowHeight = 44.0f;
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:@"myCell" forIndexPath:indexPath];
cell.titleLabel.text = @"Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment Test comment ";
return cell;
}
@end
और bam, सब कुछ बहुत अच्छा लगता है:
लेकिन जब मैं एक सहायक दृश्य जोड़ने स्टोरीबोर्ड में, कोड के किसी भी बदले बिना:
प्रथम कक्ष नरक में चला जाता है। Xcode के दृष्टिकोण डिबगर मुझसे कहता लेबल ऊंचाई 1785 अंक है, और मैं एक gif उपयोग करने के लिए इसे यहाँ दिखाने के लिए था:
मैं नोटिस करते हैं कि अन्य दो कोशिकाओं ठीक आकार के होते हैं। मैं यह भी ध्यान देता हूं कि जब मैं सिम्युलेटर को घुमाता हूं, तो पहले सेल को पोर्ट्रेट पर घुमाए जाने के बाद, ठीक से आकार बदल जाता है।
क्या किसी को पता है कि सहायक दृश्य इसे इतनी बुरी तरह क्यों खराब करता है, और इसे ठीक करने के लिए मैं क्या कर सकता हूं? एक नमूना परियोजना http://github.com/UberJason/SelfSizingNightmare पर उपलब्ध है।
मैं मानता हूं कि सहायक दृश्य समस्याओं का कारण बनता है। पसंदीदा मैक्सलेआउट विथथ को सेट करने से इस मामले में मदद मिल सकती है, लेकिन मेरे पास एक्सेसरीज़ दृश्यों के साथ अन्य आत्म-आकार वाले सेल (थोड़ा अधिक जटिल लेआउट के साथ) हैं जहां इससे मदद नहीं मिली। इसके अलावा, देखने में [tableView reloadData] को कॉल करना DidAppear काम करता है, लेकिन यह एक बदसूरत उपयोगकर्ता अनुभव बनाता है क्योंकि कोशिकाएं "पॉप" जगह में होती हैं ... वैसे भी, यह समस्या आईओएस 9 बीटा में बेहतर हल हो जाती है, इसलिए मैं बस निर्णय नहीं ले रहा हूं वास्तव में इसके बारे में चिंता करने के लिए। – UberJason