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