1

我正在尝试以这种方式将圆形图像附加到我的自定义表格单元格中:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let content : Content = contentsCollection.contents[indexPath.row]
    let channel : Channel = contentsCollection.channel(withId: content.channel!.id)

    let cell = tableView.dequeueReusableCell(withIdentifier: "ContentCell") as! ContentCell
    cell.layoutSubviews()

    let channelPicture = URL(string: channel.picture)

    cell.channelImageView.kf.setImage(with: channelPicture)

    //Rounded image
    cell.channelImageView.layer.cornerRadius = cell.channelImageView.frame.height/2    

    return cell
}

问题是,当视图控制器第一次显示时,图像视图仍然是方形的。只有“隐藏”的单元格具有圆形图像视图。

似乎是这篇文章中记录的问题:https ://medium.com/@adinugroho/circular-uiimageview-in-uitableview-cell-e1a7e1b6fe63

但我无法为我的实施找到解决方法。

4

3 回答 3

3

我认为有一个clipsToBounds缺失。

https://www.appcoda.com/ios-programming-circular-image-calayer/

我创建一个RoundImageView类。

class RoundImageView: UIImageView {
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.layer.cornerRadius = self.frame.height/2
        self.clipsToBounds = true
    }
}

在你的故事板上实现这个。

在此处输入图像描述

为我工作。

替代方案:cell.channelImageView.clipsToBound = true应该工作。

于 2018-04-06T19:08:35.693 回答
0

对于我的特殊情况,只有这样才能正常工作:

cell.layoutIfNeeded()

此行将在cornerRadius 选项之前。

希望这有助于其他有同样问题的人。

于 2018-04-07T12:37:30.467 回答
0

你可以UIImageView

imageView.layer.cornerRadius = 10
imageView.layer.masksToBounds = true

另一种方法是将 a 添加CAShapeLayer到 a UIView

let mask = CAShapeLayer()
mask.path = UIBezierPath(ovalIn: view.bounds).cgPath
let imageLayer = CAShapeLayer()
imageLayer.mask = mask
imageLayer.frame = view.bounds
imageLayer.contents = image.cgImage
view.layer.addSublayer(imageLayer)
于 2018-04-06T21:52:24.337 回答