裁剪以圈出cell.imageView吗?

时间:2019-10-26 11:16:17

标签: ios swift uiimageview tableview cell

无法裁剪 cell.imageView?来圈出。

我在很多论坛上都没找到。

我将 tableView 用于标准单元格(非自定义)。

我的代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "channelCell", for: indexPath) 
    cell.accessoryType = .disclosureIndicator
    cell.imageView?.layer.cornerRadius = cell.frame.size.height / 2
    cell.imageView?.clipsToBounds = true
    cell.imageView?.kf.setImage(with: URL(string: channels[indexPath.row].userUrlImage))
    return cell
}

我得到了这张图片,请在第二位用户上查看图片

enter image description here

UPD。

enter image description here

3 个答案:

答案 0 :(得分:0)

您应该在之前为“图像”视图设置框架:

credentials: 'same-origin'

答案 1 :(得分:0)

在您填充单元格时,您的单元格并未对其框架进行布局。
1)一种方法是调用layoutIfNeeded()然后设置转角半径,等于cell.imageView?.layer.cornerRadius = cell.imageView?.bounds.frame.height / 2 但这从性能的角度来看并不是最好的,因为您创建了多余的布局通道。
2)另一种方法是创建UITableViewCell的子类并覆盖它的layoutSubviews。然后在layoutSubviews中设置拐角半径。
3)从可重用性的角度来看,最简单,最好的方法是创建UIImageView的子类并覆盖布局子视图。 这是第三种方法的代码

/*
Create custom UITableViewCell and use CircledImageView instead of UIImageView.
*/
class CircledImageView: UIImageView {
    override func layoutSubviews() {
        super.layoutSubviews()
        self.layer.cornerRadius = self.bounds.size.height / 2
    }
}

答案 2 :(得分:0)

两个单元格的高度都不同,因此您可以通过以下代码设置高度并获得正确的圆形图像。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 50    // set your cell height
}