cell.imageView!.frame size change.迅速

Pak*_*ung 0 image cell uitableview uiimageview swift

单击单元格后,我找不到为什么cell.imageView会发生变化的原因.似乎只有宽度变化.在我的代码中,图像框架应该是第二张图片中的iPhone.

imageView是Swift内置的,而不是tableviewcell的自定义名称.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
    if tableView == resultsTable {
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MarketCell")
        var supplyDetail = String()

        var frame = cell.imageView!.frame
        let imageSize = 50 as CGFloat
        frame.size.height = imageSize
        frame.size.width  = imageSize
        cell.imageView!.frame = frame
        cell.imageView!.layer.cornerRadius = imageSize / 2.0
        cell.imageView!.clipsToBounds = true

        cell.imageView?.image = UIImage(named: "Profile Picture")
        ...getDataInBackgroundWithBlock...
            cell.imageView?.image = UIImage(data: data!)!
        return cell

    } 
}
Run Code Online (Sandbox Code Playgroud)

点击之前,

在此输入图像描述

点击后,

在此输入图像描述

bey*_*ulf 5

当您使用UITableViewCell的imageView属性时,您可以接受Apple的条款.即它将根据单元格的高度调整大小,并显示在contentMode = .ScaleAspectFit的任何默认标签的左侧.要拥有符合您自己规范的UIImageView,您可以继承UITableView并创建自己的原型单元格,我的个人建议,或者您可以覆盖简单地覆盖layoutSubviews,如下所示:

override func layoutSubviews(){
    super.layoutSubview()
    self.imageView.frame = CGRect(x:0.0,y:0.0,width:40.0,height:40.0) //Or whatever frame you think is necessary
}
Run Code Online (Sandbox Code Playgroud)

您还可以将一个UIImageView作为子视图添加到cell.contentView,并在它出列后删除所有cell.contentView的子视图.