2015-03-08 7 views
8

क्या कस्टम UITableViewCell बनाये बिना आईओएस 8 में UITableViewCell को आकार देना संभव है?आईओएस में स्व-आकार (गतिशील ऊंचाई) कक्ष 8 - कस्टम UITableViewCell के बिना संभव है?

मैंने सोचा था कि मानक UITableViewCell प्रकार (UITableViewCellStyleDefault, UITableViewCellStyleSubtitle, UITableViewCellStyleValue1, UITableViewCellStyleValue2) ऑटो लेआउट बाधाओं में बनाया गया था। यह इस तथ्य से पुष्टि की गई है कि स्टोरीबोर्ड में गैर-कस्टम कोशिकाओं के लिए बाधाओं को बदला नहीं जा सकता है।

लेकिन जब मैं UITableViewCellStyleValue1 प्रकार के एक गैर-कस्टम सेल का उपयोग करता हूं, तो इसे स्टोरीबोर्ड में सेट करें, टेक्स्ट लेबल के लिए संख्याऑफरो सेट करें और विवरण टेक्स्ट टेक्स्ट को 0 पर सेट करें, और नीचे दिए गए व्यूडलोड कोड को सेट करें, केवल सेल के टेक्स्ट लेबल को जिम्मेदार माना जाता है सेल की ऊंचाई के autosizing। यदि विवरण टेक्स्टबेल टेक्स्ट लेबल से अधिक लाइनों पर प्रदर्शित होता है, तो विस्तार के लिए पाठ टेक्स्ट टेक्स्ट लेबल के शीर्ष और निचले किनारों पर फैलता है। फिर, सेल टेक्स्ट लेबल के लिए ठीक से आकार बदलता है, लेकिन विस्तार से टेक्स्ट आकार को अपनी आकार बदलने की प्रक्रिया में अनदेखा करता है।

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

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    [self.tableView setEstimatedRowHeight:DEFAULT_ROW_HEIGHT]; 
    [self.tableView setRowHeight:UITableViewAutomaticDimension]; 
} 
+2

जो कुछ भी मैंने पाया है, वह कहता है कि आपको या तोटेबल व्यू का उपयोग करना होगा: heightForRowAtIndexPath: या एक कस्टम उप-वर्ग। मैं नहीं देख सकता कि क्यों डिफ़ॉल्ट सेल कक्षाओं में autolayout आईओएस 8 परिनियोजन के लिए ठीक से स्थापित नहीं होगा, लेकिन ऐसा लगता है कि यह नहीं है। – Thromordyn

+1

@ थ्रोमोर्डिन क्या यह आईओएस 9 में बदल गया है? सही विवरण सेल के कई सारे और विविध पहलुओं को फिर से बनाने की कोशिश कर मेरे बालों को खींचकर, बस जब पंक्ति ऊंचाई 1 लाइन से अधिक हो तो पंक्ति ऊंचाई बढ़ेगी। क्या यह कहीं भी किया गया है? पहिया को फिर से बनाने की कोशिश कर रहा है, लेकिन इस बारे में सोचना बहुत सारी चीजें हैं कि यह समय की एक बड़ी बर्बादी की तरह लगता है। – SAHM

+1

इस समस्या के लिए खोए गए घंटे -_- – aehlke

उत्तर

3

मैं सिर्फ आईओएस में इस की कोशिश की 10/XCode 8 विभिन्न प्रकार की कोशिकाओं के साथ (आईओएस 9/7 XCode में एक ही परिणाम) और ऐसा लगता है कि यह पाठलेबल के लिए और केवल detailTextLabel के लिए संभव नहीं है।

ViewController कोड कि detailTextLabel और पाठलेबल पर बारी-बारी से कुछ पाठ सेट (मूल रूप से मुद्दा यह है कि ओपी उल्लेख दोहरा)।

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 
    @IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     tableView.estimatedRowHeight = 44 
     tableView.rowHeight = UITableViewAutomaticDimension 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) 
     if indexPath.row % 2 == 0 { 
      cell.textLabel?.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 
      cell.detailTextLabel?.text = "<- textLabel" 
     } else { 
      cell.textLabel?.text = "detailTextLabel ->" 
      cell.detailTextLabel?.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 
     } 
     return cell 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 10 
    } 

} 

सुनिश्चित करें कि आपने टेक्स्ट लेबल और टेक्स्ट डेंटल लेबल की लाइन प्रॉपर्टी 0 पर सेट की है और यहां परिणाम हैं।

बेसिक सेल enter image description here

सही विस्तार से सेल enter image description here

वाम विस्तार से सेल enter image description here

उपशीर्षक सेल enter image description here

मैं एक बग के रूप में रिपोर्ट करेंगे।

+1

क्या आपने इसे UITableViewCellStyleValue1 और विस्तार टेक्स्ट लेबल के लिए आजमाया था? – SAHM

+1

आप सही हैं, ऐसा लगता है कि यह केवल टेक्स्ट लेबल पर काम करता है और विवरण टेक्स्टबेल पर नहीं है। यह एक मुद्दा होना चाहिए जहां बाधाओं को विस्तार से ठीक से जोड़ा नहीं जा रहा है टेक्स्ट टेक्स्ट। मेरा जवाब अपडेट करेगा। –

+0

मुझे आश्चर्य है कि क्या वे किसी भी समय इसे ठीक करने की योजना बना रहे हैं – SAHM

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