2014-12-31 24 views
5

Aşağıdakini, içerik görünümüne göre yüksekliğini ayarlayan bir UITableViewCell yapmaya çalışıyorum. Merkezdeki görüntü, hücre çerçevesi kadar geniş olmalı ve yüksekliğini orantısal olarak ayarlamalıdır. Gördüğünüz gibiUITableViewCell, içeriğine uyacak şekilde yüksekliği nasıl ayarlayabilir?

enter image description here

, hücrede görüntü istediğim yolu gibi görüntülenmez. UIImageView'un yüksekliğini override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell'da 320.0 olarak ayarlamaya çalıştım, ancak hiç yardımcı olmuyor.

Soru: Hücrenin görüntü yüksekliğine uymasını nasıl sağlayabilirim? Bilginize

: Ben func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat

  • Ben UIImageView ya da bir şey için bir yükseklik sınırlaması ayarlayabilirsiniz yok geçersiz kılma değilim

    1. , sadece görüşlerini düzenlemek için padding kullanarak değilim.
    2. Görüntü, görünümüne uygun modunu kullanarak görüntüleniyor.

    Düzenleme: Bir yükseklik sınırlaması eklemek için ayrıca taşınan

    canlandırmaya:

    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 
        } 
    } 
    

    Ve çalıştırırken ben bir kısıtlama çatışma hata var. Aşağıya bakın:

    (
        "<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 gelir, ancak çakıştığını gibi görünüyor nerede bilmiyorum. Bunu düzeltmenin herhangi bir yolu var mı? Teşekkürler!

  • +0

    üzerinde bu yayını bakınız: [dinamik hücre düzenleri ve değişken sıralı yüksekliklerinde UITableView Otomatik Düzeni kullanma] (http://stackoverflow.com/questions/18746929/using -auto-düzen-in-UITableView-için-dinamik-hücre-düzenleri-değişken sıralı-yükseklikler) – zisoft

    cevap

    5

    iOS 7 ve

    Kullanım AutoLayout altında ve düzgün kısıtlamaları ekleyin, daha sonra dinamik yükseklik için UITableViewCellHeightForRow yöntemini kullanın.

    IOS 8 için ve

    tableView.estimatedRowHeight = 44.0 
    tableView.rowHeight = UITableViewAutomaticDimension 
    
    İlgili konular