0

我正在制作动画UICollectionViewCell以在点击时缩小。动画有效,但似乎文本在我设置的持续时间(在这种情况下为 0.3 秒)内向左移动并且动画向中心移动。我尝试了一些动画过程的变体,但情况仍然存在。

以下是文本问题的示例:

在此处输入图像描述

以及代码实现:

func collectionView(collectionView: UICollectionView, didHighlightItemAtIndexPath indexPath: NSIndexPath) {
    var currentCell = collectionView.cellForItemAtIndexPath(indexPath) as UICollectionViewCell!

    UIView.animateWithDuration(0.3, delay: 0, options: UIViewAnimationOptions.AllowUserInteraction, animations: {

      currentCell.backgroundColor = self.categoryArray[indexPath.row].catColor
      currentCell.frame.inset(dx: 5, dy: 5)

      let imageView: UIImageView = currentCell.subviews[0] as UIImageView
      let imageSize = currentCell.frame.height * 0.45
      imageView.frame = CGRect(x: (currentCell.frame.width / 2) - (imageSize / 2), y:currentCell.frame.height * 0.15, width: imageSize, height: imageSize)

      let textLabel:UILabel! = currentCell.subviews[2] as UILabel
      textLabel.frame = CGRect(x: 0, y: currentCell.frame.height * 0.30, width: currentCell.frame.width, height: currentCell.frame.height)

      let bottomBorder: UIView = currentCell.subviews[1] as UIView
      bottomBorder.frame = CGRectMake(0, currentCell.frame.height - 1.0, currentCell.frame.width, 5)

    }, completion: nil)
}

理想情况下,我希望文本始终调整大小并保持居中,而不是向左“浮动”然后向中心移动

……这么多笑脸……

4

1 回答 1

2

我认为这将通过使用 CGAffineTransformMakeScale() 来更改单元格的大小最有效。据我所知,没有其他方法可以以动画方式缩放标签中的文本。

override func collectionView(collectionView: UICollectionView, didHighlightItemAtIndexPath indexPath: NSIndexPath) {
    var currentCell = collectionView.cellForItemAtIndexPath(indexPath) as UICollectionViewCell!
    UIView.animateWithDuration(0.3, animations: { () -> Void in
        currentCell.contentView.backgroundColor = self.categoryArray[indexPath.row].catColor
        currentCell.transform = CGAffineTransformMakeScale(0.8, 0.8)
    })

}
于 2015-03-25T15:49:28.370 回答