使用autolayout在某些单元格中加载图像

时间:2016-03-10 01:13:18

标签: ios autolayout swift2 uitableview

所以我有一个Feed显示用户发布的帖子(使用Parse)。目前,单元格包含标题,发布的用户的个人资料图像,日期,内容(文本),图像视图(用于他们发布的图像)等等。评论按钮。

我的问题是,使用自动布局显示他们发布的图像的最佳方法是什么。目前我的imageView高度始终设置为0,然后我在代码中引用imageView的常量高度。 该应用程序下拉所有帖子并开始加载postView的帖子。

在单元格中加载图像的代码是

if let imageToFetch = post.objectForKey("postImage") as? PFObject {
self.postImageHeight.constant = 500
if let fetchImage = imageToFetch.objectForKey("image") as? PFFile{
    fetchImage.getDataInBackgroundWithBlock {
        (imageData: NSData?, error: NSError?) -> Void in
        if error == nil {
            if let imageData = imageData {
                let image = UIImage(data:imageData)
                self.postImage.image = image
                self.imageGesture(self.postImage)
            }
        }
    }
} else {
    //Make the size constarints of the image 0
    self.postImageHeight.constant = 0
}

但这似乎是一种不稳定的方法,因为我对图像高度进行了硬编码。任何关于这个问题的帮助都会受到关注。

2 个答案:

答案 0 :(得分:0)

您可以使用图片size属性更改它们。但为此,您需要使用此处引用的固定宽度kImageWidth

self.postImageHeight.constant = kImageWidth * image.size.height / image.size.width
self.layoutIfNeeded()

答案 1 :(得分:0)

简单回答:在设置postImageHeight后手动计算postImage.image

/// .....
self.postImage.image = image
self.postImageHeight.constant = self.postImage.bounds.size.width * image.size.height / image.size.width
/// .....

更好的选择是向UITableViewCell子类添加特殊方法:

func setPostImageWithImage(image: UIImage?) {
    postImageView.image = image

    // Manually adjust image height.
    if let image = image {
        postImageViewHeightConstraint.constant = postImageView.bounds.size.width * image.size.height / image.size.width
    }
    else {
        // Collapse if there is no image.
        postImageViewHeightConstraint.constant = 0
    }
}