it-roy-ru.com

Установите закругленные углы на UIimage в UICollectionViewCell в быстром

У меня есть простая проблема, которую я не могу найти решение в Google, документах или здесь.

У меня есть Collectionview в моем контроллере представления. Я создал пользовательскую ячейку DescriptionCell, которая содержит UIImage. Я хочу, чтобы у этого изображения были закругленные углы. Однако я не знаю, где установить угловой луч на слое UIImage. Я попытался в методе awakeFromNib ячеек, в методе делегата CellForRowAtIndexPath и переопределил LayoutSubview в ячейке, но он не работает ... Где я должен поместить код, чтобы установить радиус для UIImage?

Чтобы уточнить, я знаю, как создавать закругленные углы UIImage. Но если это подпредставление ячейки Collectionview, я не знаю, где установить угловой луч.

Вот код для моего описания ячейки

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
    }

И в ячейке для RowAtIndePath

 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    
}

Заранее спасибо!

13
Jell92

Ну, вы используете часть кода из ответа, который вы сказали, что использовали . Другая часть imageView.clipsToBounds = true

Обновите свой awakeFromNib как это:

override func awakeFromNib() {
    mImage.layer.cornerRadius = 5 
    mimage.clipsToBounds = true
}

Чтобы сделать это кругом, вам нужно установить cornerRadius на половину высоты квадрата. В вашей 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
}
19
Sam_M

Вы пытались разместить его внутри пользовательской функции инициализации UICollectionViewCell?

override init(frame: CGRect) {
    super.init(frame: frame)

    image.layer.masksToBounds = true
    image.layer.cornerRadius = 10
}
1
Hama