动画 uicollectionviewcell,动画期间文本对齐偏离中心

animating a uicollectionviewcell, text alignment off center during animation

我正在制作 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)
}

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

...这么多笑脸...

我认为使用 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)
    })

}