问题描述
我的collectionView中有一些垂直放置的单元格。
每个单元格的左侧都有一个图像,该图像可以正确加载。
但是当我在屏幕上打开右上角的圆角后,打开屏幕时不会自动加载图像。
这是cellForItemAt
func setAvatarImage(imageName: String) {
self.addSubview(avatarImageView)
layoutIfNeeded()
avatarImageView.layer.roundCorners(corners: [.topRight],radius: UIDevice.current.userInterfaceIdiom == .pad ? 85 : 40)
avatarImageView.contentMode = .scaleAspectFit
avatarImageView.image = UIImage(named: imageName)
avatarImageView.snp.makeConstraints { (make) in
make.height.equalToSuperview()
make.width.equalToSuperview().multipliedBy(0.5)
make.left.equalToSuperview()
}
}
这也是roundCorners
方法的CALayer扩展,在我应用程序中的每个元素上均能完美运行。同样在这里它可以正常工作,但是如果不在collectionView中向上和向下滚动,就不会加载图像:
func roundCorners(corners: UIRectCorner,radius: CGFloat,borderWidth: CGFloat = 0,borderColor: UIColor = .clear) {
let maskPath = UIBezierPath(
roundedRect: bounds,byRoundingCorners: corners,cornerRadii: CGSize(width: radius,height: radius)
)
let shape = CAShapeLayer()
shape.path = maskPath.cgPath
mask = shape
let borderLayer = CAShapeLayer()
borderLayer.path = maskPath.cgPath
borderLayer.linewidth = borderWidth
borderLayer.strokeColor = borderColor.cgColor
borderLayer.fillColor = UIColor.clear.cgColor
borderLayer.frame = self.bounds
addSublayer(borderLayer)
}
解决方法
添加以下内容即可解决:
layoutIfNeeded()