Подтвердить что ты не робот

Установите закругленные углы на 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    
}

Спасибо заранее!

4b9b3361

Ответ 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
    }
}