2014-12-31 14 views
5

मैं नीचे UITableViewCell बनाने की कोशिश कर रहा हूं, जो इसकी सामग्री दृश्य के अनुसार अपनी ऊंचाई समायोजित करेगा। केंद्र में छवि सेल फ्रेम के रूप में चौड़ी होनी चाहिए, और इसकी ऊंचाई आनुपातिक रूप से समायोजित करें।UITableViewCell अपनी सामग्री को फिट करने के लिए ऊंचाई समायोजित करने के लिए कैसे करें?

enter image description here

आप देख सकते हैं, सेल में छवि जिस तरह से मैं चाहता हूँ की तरह प्रदर्शित नहीं करता है। मैंने की ऊंचाई override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell में 320.0 की ऊंचाई निर्धारित करने की कोशिश की, लेकिन यह बिल्कुल मदद नहीं करता है।

प्रश्न: मैं छवि की ऊंचाई का सम्मान करने के लिए सेल कैसे बना सकता हूं?

FYI करें:

  1. मैं func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
  2. मैं UIImageView या कुछ भी करने के लिए एक ऊंचाई बाधा निर्धारित नहीं करते अधिभावी नहीं कर रहा हूँ, मैं paddings का उपयोग कर केवल विचारों की व्यवस्था करने के हूँ।
  3. छवि पहलू-फिट मोड का उपयोग कर प्रदर्शित होती है।

संपादित करें:

मैं एक ऊंचाई बाधा जोड़ने के लिए आगे ले जाया गया चित्र:

class MyTableViewPostCell: UITableViewCell { 
    @IBOutlet weak var contentLabel: UILabel! 
    @IBOutlet weak var pictureImageView: UIImageView! 
    @IBOutlet weak var pictureImageViewHeightConstraint: NSLayoutConstraint! 
} 

class MyTableViewController: UITableViewController { 
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("MyTableViewPostCell") as MyTableViewPostCell 
     cell.contentLabel.text = "This is a very very very very very very very long content." 
     cell.pictureImageViewHeightConstraint.constant = 320 
     cell.pictureImageView.sd_setImageWithURL(NSURL(string: "http://somedomain.com/pic")) 
     return cell 
    } 
} 

और जब चल रहा एक बाधा संघर्ष त्रुटि मिली। नीचे देखें:

(
    "<NSLayoutConstraint:0x7ff7b5026c30 V:[UIImageView:0x7ff7b50289e0(40)]>", 
    "<NSLayoutConstraint:0x7ff7b5029a90 V:[UIImageView:0x7ff7b5029990(320)]>", 
    "<NSLayoutConstraint:0x7ff7b502a630 UIImageView:0x7ff7b50289e0.top == UITableViewCellContentView:0x7ff7b5028910.topMargin + 6>", 
    "<NSLayoutConstraint:0x7ff7b502a770 V:[UIImageView:0x7ff7b50289e0]-(12)-[UILabel:0x7ff7b5029390'This is a very very very ...']>", 
    "<NSLayoutConstraint:0x7ff7b502a950 V:[UILabel:0x7ff7b5029390'This is a very very very ...']-(10)-[UIImageView:0x7ff7b5029990]>", 
    "<NSLayoutConstraint:0x7ff7b502aa40 UITableViewCellContentView:0x7ff7b5028910.bottomMargin == UILabel:0x7ff7b5029c20'Label'.bottom + 10>", 
    "<NSLayoutConstraint:0x7ff7b502aa90 V:[UIImageView:0x7ff7b5029990]-(17)-[UILabel:0x7ff7b5029c20'Label']>", 
    "<NSLayoutConstraint:0x7ff7b2cae430 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7ff7b5028910(283.5)]>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7ff7b5029a90 V:[UIImageView:0x7ff7b5029990(320)]> 

मैं नहीं जानता कि जहां UIView-Encapsulated-Layout-Height से आता है, लेकिन जैसे कि यह संघर्ष खड़ी कर रहा है लगता है। इसे ठीक करने का कोई उपाय? धन्यवाद!

+0

यह पोस्ट देखें: ([ऑटो लेआउट का उपयोग करना UITableView में गतिशील सेल लेआउट और चर पंक्ति ऊंचाइयों के लिए] http://stackoverflow.com/questions/18746929/using ऑटो लेआउट में UITableView के लिए गतिशील सेल लेआउट-चर-पंक्ति-ऊंचाइयों) – zisoft

उत्तर

5

आईओएस 7 के लिए और नीचे

उपयोग autolayout और बाधाओं को ठीक से जोड़ने के लिए, तो गतिशील ऊंचाई के लिए UITableViewCellHeightForRow विधि का उपयोग करें।

iOS 8 के लिए और ऊपर

tableView.estimatedRowHeight = 44.0 
tableView.rowHeight = UITableViewAutomaticDimension 
संबंधित मुद्दे

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