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

时间:2015-03-25 15:07:05

标签: ios swift uicollectionviewcell animatewithduration

我在点击时动画UICollectionViewCell缩小。动画可以工作,但是看起来文字向左移动并且在我设置的持续时间内向中心动画(在这种情况下为0.3秒)。我尝试了一些动画程序的变体,但情况仍然存在。

以下是文字问题的示例:

enter image description here

代码实现:

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)
}

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

......这么多笑脸......

1 个答案:

答案 0 :(得分: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)
    })

}