#swift #uicollectionview #uiimage #uicollectionviewcell
#swift #uicollectionview #uiimage #uicollectionviewcell
Вопрос:
У меня есть ячейка, состоящая из UIImageView, высота которой составляет 70% от размера ячейки, а остальные 30% используются меткой.
Ячейки имеют динамический размер, который рассчитывается в соответствии с шириной устройства.
Я убедился, что ячейки квадратные, а UIImageView, содержащийся внутри ячейки, также имеет соотношение 1: 1 для их высоты и ширины
Я устанавливаю радиус угла UIImage в методе делегирования cellForItem представления коллекции
cell.userImage.layer.cornerRadius = cell.userImage.bounds.width / 2
cell.userImage.clipsToBounds = true
Итак, кто-нибудь может указать мне правильное направление, почему это происходит?
Когда я должен установить радиус угла изображения в жизненном цикле ячейки?
Этого не произойдет, если я задам статический размер изображения, но я хочу, чтобы размер был динамическим в соответствии с размером экрана
Ответ №1:
попробуйте cell.userImage.layer.maskToBounds = true
Лучше обернуть ImageView внутри UIView . Затем установите свойства UIView bound.size.width/2
Ответ №2:
Вы принимаете ширину «границ». Попробуйте взять ширину / высоту cell.UserImage.
cell.userImage.layer.cornerRadius = cell.userImage.bounds.width / 2
Кроме того, является ли соотношение изображения 1: 1?
Комментарии:
1. Это была ошибка при вставке сюда, в моем коде я правильно использую границы UIImageView …… да, соотношение равно 1: 1
Ответ №3:
эй, используйте этот делегат UICollectionViewDelegateFlowLayout, чтобы задать размер для каждого элемента в ячейке. что-то вроде приведенного ниже
...
collectionView.delegate = self
...
// then make your view controller confirm to the UICollectionViewDelegateFlowLayout
// then overide this method like below
public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
CGSize(width: MyLayoutConstants.collectionViewItemWidth,
height: collectionView.frame.height)
}
это всего лишь пример из моего случая. основная идея заключается в том, чтобы использовать делагейт выше.
Комментарии:
1. Я использовал этот метод для установки размера, но все равно не работал. Затем я переключился на CompositionalLayout, и этой проблемы не произошло