我正在尝试旋转并移动和缩放字母。类似于本视频,但带有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