Установите закругленные углы на UIimage в UICollectionViewCell в быстрых
У меня есть простая проблема, что я не могу найти решение для google, документов или здесь.
У меня есть Collectionview в моем контроллере. Я создал пользовательскую ячейку, DescriptionCell, которая содержит UIImage. Я хочу, чтобы у этого изображения были закругленные углы. Тем не менее, я не знаю, где установить cornerradius на уровне UIImage. Я пробовал в методе awakeFromNib ячеек, в методе делегатов CellForRowAtIndexPath и переопределяет LayoutSubview в ячейке, но он не работает.
Где я должен поставить код для установки радиуса для UIImage?
Чтобы указать, я знаю, как создавать закругленные углы UIImage. Но если это подзаголовок ячейки Collectionview, я не знаю, где установить cornerradius.
Вот код для моего описанияCell
class DescriptionCell: UICollectionViewCell {
@IBOutlet weak var mImage: UIImageView!
override func awakeFromNib() {
//mImage.layer.cornerradius = 5
//Does not work, the image is still square in the cell
}
И в ячейке forRowAtIndePath
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("descriptioncell", forIndexPath: indexPath) as! DescriptionCell
//cell.mImage.layer.cornerradius = 5
//Does not work, the image is still square in the cell
return cell
}
Спасибо заранее!
Ответы
Ответ 1
Хорошо, вы используете часть кода из ответа, который, как вы сказали, используете.
другая часть imageView.clipsToBounds = true
Обновите свой awakeFromNib
следующим образом:
override func awakeFromNib() {
mImage.layer.cornerRadius = 5
mimage.clipsToBounds = true
}
Чтобы сделать это кругом, вам нужно установить angleRadius на половину квадратной высоты. В cellForItemAtIndexPath
добавьте следующие строки:
cell.layoutIfNeeded()
cell.mImage.layer.cornerRadius = cell.mImage.frame.height/2
Обновление
Чтобы избежать двойного вызова layoutSubviews
, переопределите layoutSubviews
в своем классе DescriptionCell
и поместите туда код:
override func layoutSubviews() {
super.layoutSubviews()
layoutIfNeeded()
mImage.layer.cornerRadius = mImage.frame.height/2
}
Ответ 2
Вы пытались помещать его внутри пользовательской функции инициализации UICollectionViewCell?
override init(frame: CGRect) {
super.init(frame: frame)
image.layer.masksToBounds = true
image.layer.cornerRadius = 10
}
Ответ 3
Вы также можете создать расширение, например:
extension UIView {
func addBorder(color: UIColor, cornerRadius: CGFloat = 10, borderWidth: CGFloat = 1.0) {
layer.borderWidth = borderWidth;
layer.borderColor = color.cgColor
layer.cornerRadius = cornerRadius
layer.masksToBounds = true
}
}