如何在UITableView的自定义UITableViewCell中实现以下布局?

时间:2015-12-30 06:02:38

标签: ios swift tableview cell

这是我想在自定义UITableViewCell中显示的内容。两个UILabel和UIImageView正在从服务器动态填充。两个UILabel都可以有两行以上的文本,这意味着标签的高度也将动态决定。此外,UIImageView中的图像具有不同的宽高比,因此它们的大小也会有所不同(我想保持图像的宽高比,这就是我使用aspectFit的contentMode的原因)。

enter image description here

我是iOS应用程序开发的新手,并尝试自己实现它并获得以下结果:

如图所示,顶部UILabel和UIImageView之间有一个很大的空间。同样,底部UILabel和UIImageView之间也有很大的空间。

enter image description here

但是,这不是我的应用程序的预期行为。 我在互联网上搜索了更多,并找到了一个关于这个空间问题的解决方案。

**

internal var aspectConstraint : NSLayoutConstraint? {
        didSet {
            if oldValue != nil {
                detailSubImage.removeConstraint(oldValue!) 
            }
            if aspectConstraint != nil {
                detailSubImage.addConstraint(aspectConstraint!)
            }
        }
    }

    override func prepareForReuse() {
        super.prepareForReuse()
        aspectConstraint = nil
    }

    func setPostedImage(image : UIImage) {
        let aspect = image.size.width / image.size.height
        aspectConstraint = NSLayoutConstraint(item: detailSubImage, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: detailSubImage, attribute: NSLayoutAttribute.Height, multiplier: aspect, constant: 0.0)
        detailSubImage.image = image
    }

}

 **

在设置图像之前,我在要在UIImageView上分配的图像上调用setPostedImage()方法。此方法()删除运行时的约束,删除标签和图像之间的白色间距。(无法显示示例,因为我不允许发布两张以上的图片)

在使用这种方法之后,起初,我以为我解决了这个问题但是Xcode的控制台对不满意的约束提出了太多的警告,这也是一个问题。

0 个答案:

没有答案