Карусель Layout Collection Просмотреть выпуск - PullRequest
0 голосов
/ 22 сентября 2018
  • Здравствуйте, я следил за видео Raywenderlich для просмотра коллекции пользовательских макетов.UICollectionViewFlowLayout имеет подклассы, как показано ниже* var count = 0 переопределить func prepare () {

    super.prepare ()

    }

переопределить макет funcAttributesForElements(в прямоугольнике: CGRect) -> [UICollectionViewLayoutAttributes]? {

   let attributes = super.layoutAttributesForElements(in: rect)

   var attributesCopy = [UICollectionViewLayoutAttributes]()

   for itemAttributes in attributes! {
     let itemAttributesCopy = itemAttributes.copy() as! UICollectionViewLayoutAttributes

     changeLayoutAttributes(itemAttributesCopy)

     attributesCopy.append(itemAttributesCopy)

   }

   return attributesCopy  

}

    **override open func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool** {

   return true

   }

    **func changeLayoutAttributes(_ attributes: UICollectionViewLayoutAttributes)** {


   let collectionCenter = collectionView!.frame.size.height/2

   let offset = collectionView!.contentOffset.y // bounds

   let normalizedCenter = attributes.center.y - offset

   let maxDistance = self.itemSize.height + self.minimumLineSpacing

   let distance = min(abs(collectionCenter - normalizedCenter), maxDistance)

   let ratio = (maxDistance - distance)/maxDistance

   let alpha = ratio * (1 - self.standardItemAlpha) + self.standardItemAlpha

   let scale = ratio * (1 - self.standardItemScale) + self.standardItemScale

   attributes.alpha = alpha

   attributes.transform3D =  CATransform3DScale(CATransform3DIdentity, scale, scale, 1)
      }    }

Я не понимаю логику расчета?Не могли бы вы объяснить, почему мы рассчитываем расстояние и отношение?

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