UICollectionView с пользовательским макетом - PullRequest
0 голосов
/ 06 февраля 2019

Я сейчас строю UICollectionView с пользовательским макетом.При переопределении функции Prepare в классе макета я должен вычислить высоту каждой ячейки.Все ячейки должны иметь динамические высоты, содержащие UIImage и в зависимости от содержимого несколько UILabel с.Это действительно лучший способ иметь делегата в UIViewController и вычислять высоту, создавая каждый объект в ячейке и возвращая его высоту?Пример кода ниже - это пример, который я изменил с raywenderlich.com.

Спасибо за понимание

func collectionView(_ collectionView:UICollectionView, heightForPhotoAtIndexPath indexPath:IndexPath, withWidth columnWidth:CGFloat) -> CGFloat {


    let originalHeight = photos[indexPath.item].image.size.height
    let originalWidth = photos[indexPath.item].image.size.width

    let percent = columnWidth / originalWidth
    let photoHeight = originalHeight * percent

    let captionLabel = UILabel(frame: CGRect(x: 0, y: 0, width: columnWidth, height: 0))
    captionLabel.font = UIFont(name: "AvenirNext-DemiBold", size: 12.0)
    captionLabel.text = photos[indexPath.item].caption
    captionLabel.sizeToFit()
    let captionLabelHeight = captionLabel.frame.size.height


    let commentLabel = UILabel(frame: CGRect(x: 0, y: 0, width: columnWidth, height: 0))
    commentLabel.font = UIFont(name: "AvenirNext-Regular", size: 10.0)
    commentLabel.text = photos[indexPath.item].comment
    commentLabel.sizeToFit()
    let commentLabelHeight = commentLabel.frame.size.height

    return photoHeight + captionLabelHeight + commentLabelHeight + 20
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...