UICollectionViewCell imageView 不滚动不加载
UICollectionViewCell imageView doesn't load without scrolling
我的 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()
我的 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()