我在点击时动画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)
}
理想情况下,我希望文本调整大小并始终保持居中,而不是“浮动”到左边然后移向中心
......这么多笑脸......
答案 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)
})
}