У меня есть пользовательский UICollectionViewCell
, который имеет UIImage
и UIButton
.
Рамка для расширенной ячейки - 110 x 60. По умолчанию это будет 60x60.
Когда приложение загружается, я бы хотел, чтобы ячейка начиналась с размера 60x60 и показывала только изображение.При нажатии на ячейку ячейка обновится до кадра 110x60 и покажет кнопку UIB, которая находится рядом с изображением.
В настоящее время мое приложение загружается, и ячейки имеют размер 60x60, но из-за моей настройки автоматической компоновкиизображение сжато, и кнопка в натуральную величину.Если я коснусь ячейки, она обновит свой фрейм и выглядит великолепно.
Цель состоит в том, чтобы сначала увидеть только изображение, а затем увидеть кнопку после того, как ячейка обновила свой фрейм.
Я также хотел бы иметь возможность снова нажать на ячейку и изменить ее размер до 60x60, скрывая кнопку и показывая только изображение.
Вот что я сейчас пытаюсь:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
collectionView.performBatchUpdates(nil, completion: nil)
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
switch collectionView.indexPathsForSelectedItems?.first {
case .some(indexPath):
return CGSize(width: 110.0, height: 60.0)
default:
return CGSize(width: 60.0, height: 60.0)
}
}
По запросу мой код класса CollectionViewCell:
class myCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myButton: UIButton!
var myCellDelegate : myCollectionViewCellDelegate?
override func awakeFromNib() {
super.awakeFromNib()
self.layer.cornerRadius = 30
self.layer.masksToBounds = true
myImageView.layer.cornerRadius = myImageView.frame.width / 2
myImageView.layer.masksToBounds = true
}
// MARK: - Actions
@IBAction func myButtonTapped(_ sender: Any) {
self.myCellDelegate?.actionClicked(self)
}
}
Заметим, что там не так много, поэтому не уверен, поможет ли это.Я просто настраиваю cornerRadius для ячейки и моего изображения, а затем создаю делегата для действия с кнопкой.