我正在嘗試旋轉並移動和縮放字母。類似於本視頻,但帶有UILabels(每個標籤一個字母) https://www.youtube.com/watch?v=rwE6tAQPFuY&feature=youtu.be使用UILabel字母實現旋轉,移動,縮放動畫效果。 Swift
一個360度旋轉,平移運動和一個縮放到同一時間的正常大小。
我管理通過執行以下操作
UIView.animateWithDuration(0.5,延遲,以實現與正常的UIImageView這種效果:0,選擇:UIViewAnimationOptions.CurveLinear,動畫: { image.frame = CGRectMake(middlePosX ,middlePosY,imageWidth *(1 + ranScale)/ 2,imageHeight *(1 + ranScale)/ 2) image.transform = CGAffineTransformRotate(letterImage.transform,CGFloat的(M_PI))
}, completion:
{ _ in
UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations:
{
image.frame = CGRectMake(finalPosX, finalPosY, imageWidth, imageHeight)
image.transform = CGAffineTransformRotate(letterImage.transform, CGFloat(M_PI))
},
completion: nil)
})
然而當使用UILabels該框架沒有重置文本的大小。所以,我試圖初始變換,然後是本
letterImage.transform = CGAffineTransformScale(letterImage.transform, ranScale, ranScale)
UIView.animateWithDuration(0.5,延遲:0,選擇:UIViewAnimationOptions.CurveLinear,動畫: {
letterImage.frame = CGRectMake(middlePosX, middlePosY, imageWidth, imageHeight)
var rotateTransform = CGAffineTransformMakeRotation(CGFloat(M_PI))
var scaleTransform = CGAffineTransformMakeScale((1 + ranScale)/2, (1 + ranScale)/2)
letterImage.transform = CGAffineTransformConcat(rotateTransform, scaleTransform)
}, completion:
{ _ in
UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations:
{
letterImage.frame = CGRectMake(finalPosX, finalPosY, imageWidth, imageHeight)
letterImage.transform = CGAffineTransformIdentity
},
completion: nil)
})
,但它不達到效果我想..當我將旋轉與運動相結合時,它以不同的方式旋轉,然後在上一次和結束時,有時它甚至會發生一次異常跳躍。 看起來像這樣 https://www.youtube.com/watch?v=CaD1BTwN8Yg&feature=youtu.be
如何使用UILabel字母達到所需的效果?
感謝您指點我在正確的方向 – Brian