इसलिए मेरे पास 2 प्रोटोटाइप सेल के साथ एक टेबल व्यू है। यहाँ मेरा कोड है:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        if indexPath.row == 0 {

            let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! ItemDetailsCell

            cell.centerImage.image = mainImage

            cell.heading.text = detailsHeadings[indexPath.row]
            let headingString = detailsHeadings[indexPath.row]
            cell.body.text = details[headingString]

            tableView.rowHeight = cell.labelBlack.frame.height + 40

            return cell

        } else {

            let cell = tableView.dequeueReusableCellWithIdentifier("Cell2", forIndexPath: indexPath) as! ItemDetailsCell

            cell.heading.text = detailsHeadings[indexPath.row]
            let headingString = detailsHeadings[indexPath.row]
            cell.body.text = details[headingString]
            let bodyString = details[headingString]

            let labelWidth = Int(cell.body.frame.width)
            println(labelWidth)
            let label = UILabel(frame: CGRect(x: 0, y: 0, width: labelWidth, height: 10000))
            label.text = bodyString
            label.numberOfLines = 100
            label.font = UIFont(name: "OpenSans-Light", size: 12.0)
            label.sizeToFit()
            tableView.rowHeight = label.frame.height + 3

            return cell

        }

    }

तो दूसरे प्रोटोटाइप सेल में एक शब्दकोश से दिए गए मानों के साथ सिर्फ दो लेबल हैं। सेल आकार में पाठ की कितनी पंक्तियों के आधार पर विस्तार या अनुबंध करने की आवश्यकता है। ऑटो लेआउट में मेरे पास 0 के लिए निर्धारित लाइनों की संख्या है, इसलिए इसे कई लाइनों की आवश्यकता होगी। यह ठीक काम करता है सिवाय जब आप ऐप के भीतर स्क्रॉल करते हैं तो यह दृश्य को स्नैप करेगा क्योंकि उपयोगकर्ता नीचे से ऊपर स्क्रॉल करते हैं। इससे बचने का कोई रास्ता है क्या?

किसी भी सहायता के लिए अग्रिम रूप से धन्यवाद।

1
Joe 3 पद 2015, 01:00

2 जवाब

सबसे बढ़िया उत्तर

मुझे यह वास्तव में कुछ और समय बिताने के बाद मिला:

http://candycode.io/automatically-resizing-uitableviewcells-with-dynamic-text-height-using-auto-layout/

इसने मुझे वो दिया जो मुझे चाहिए था। मैंने अपने कोड के उन हिस्सों को हटा दिया है जो रोहाइट सेट करते हैं और फिर मेरे सेल साइज़ को बाधित करने के लिए viewDidLoad पद्धति के साथ-साथ ऑटो लेआउट का उपयोग किया है और जब आप स्क्रॉल करते हैं, तो बिना किसी तड़क-भड़क के यह काम कर रहा है।

0
Joe 3 पद 2015, 13:26

आप तालिका के पंक्ति पंक्ति को बदल रहे हैं। यह बहुत गलत है। तालिका दृश्य की पंक्तिहाइट उन सभी पंक्तियों के लिए डिफ़ॉल्ट है जिनकी अपनी ऊँचाई नहीं है, इसलिए आप प्रभावी रूप से सभी कक्षों की ऊँचाई बदल रहे हैं।

आपको प्रतिनिधि विधि का उपयोग करना चाहिए तालिका देखें: heightForRowAtIndexPath:

0
gnasher729 3 पद 2015, 13:30