UITableView - UITableViewCell.Style .subtitle - 如何使 UIImageView 循环? - 斯威夫特 5

Posted

技术标签:

【中文标题】UITableView - UITableViewCell.Style .subtitle - 如何使 UIImageView 循环? - 斯威夫特 5【英文标题】:UITableView - UITableViewCell.Style .subtitle - How to make UIImageView circular? - Swift 5 【发布时间】:2019-12-23 18:59:49 【问题描述】:

我得到了一个带有默认单元格样式的UITableView。 (设置为 .subtitle 样式) 我想让它的UIImageView 循环。

cell.imageView.layer.borderWidth = 1
cell.imageView.layer.masksToBounds = false
cell.imageView.layer.borderColor = UIColor.white.cgColor
cell.imageView.layer.cornerRadius = profileImageView.frame.size.width/2
cell.imageView.clipsToBounds = true

在这种情况下这是行不通的!

【问题讨论】:

【参考方案1】:

感谢https://***.com/a/50462058/10489699,我找到了正确的方法。

        let itemSize = CGSize.init(width: 50, height: 50)
        UIGraphicsBeginImageContextWithOptions(itemSize, false, UIScreen.main.scale)
        let imageRect = CGRect.init(origin: CGPoint.zero, size: itemSize)
        cell.imageView?.image!.draw(in: imageRect)
        cell.imageView?.image! = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        cell.imageView?.layer.cornerRadius = (itemSize.width) / 2
        cell.imageView?.clipsToBounds = true

不要尝试if let image = cell.imageView?.image! ...,我不知道为什么,但它击中了 UIImageView !

【讨论】:

【参考方案2】:

您可以使用此代码

public extension UIView 
    func round() 
        let width = bounds.width < bounds.height ? bounds.width : bounds.height
        let mask = CAShapeLayer()
        mask.path = UIBezierPath(ovalIn: CGRect(x: bounds.midX - width / 2, y: bounds.midY - width / 2, width: width, height: width)).cgPath
        self.layer.mask = mask
    

你可以这样使用:

profileImageView.round()

【讨论】:

以上是关于UITableView - UITableViewCell.Style .subtitle - 如何使 UIImageView 循环? - 斯威夫特 5的主要内容,如果未能解决你的问题,请参考以下文章

UItableview 单元格的动态高度与 UItableview 单元格内的 UItableview

UITableView

水平 UITableView 中的垂直 UITableView

如何与重叠显示的 UITableView 交互另一个 UITableView

在 UITableView 中的 UINib 中重新加载 UITableView

iOS小技能:1. 什么是UITableView? 2. UITableView如何展示数据