Ios 翻转标签上的快速动画
我在Swift 2中有一个无法修复的问题 我有一个Ios 翻转标签上的快速动画,ios,animation,Ios,Animation,我在Swift 2中有一个无法修复的问题 我有一个ui标签和一个ui视图,两者都是颠倒的。我在UIView中添加了一个扩展,以执行一个动画(先增长后收缩),该动画是在我单击按钮时执行的。但是,当执行动画时,UILabel在动画过程中向后翻转180°,而UIView则不会。。。你知道为什么会这样吗 代码如下: ui视图的扩展: func animateBounce(multiplier: CGFloat, duration: NSTimeInterval) { UIView.animate
ui标签
和一个ui视图
,两者都是颠倒的。我在UIView
中添加了一个扩展,以执行一个动画(先增长后收缩),该动画是在我单击按钮时执行的。但是,当执行动画时,UILabel
在动画过程中向后翻转180°,而UIView
则不会。。。你知道为什么会这样吗
代码如下:
ui视图的
扩展:
func animateBounce(multiplier: CGFloat, duration: NSTimeInterval)
{
UIView.animateWithDuration(duration / 2, animations:
{
self.transform = CGAffineTransformMakeScale(multiplier, multiplier)
}, completion:
{
finish in
UIView.animateWithDuration(duration / 2)
{
self.transform = CGAffineTransformIdentity
}
})
}
如何翻转ui视图
和ui标签
:
label.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
view.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
我如何称呼动画:
let multiplier = 1.5 as CGFloat
let animationTime = 0.5 as NStimeInterval
label.animateBounce(1.5, duration: animationTime)
view.animateBounce(1.5, duration: animationTime)
回答:(归功于马特)
我覆盖了标签的transform属性,从而删除了之前的转换(旋转)。您应该使用CGAffineTransformConcat添加新的变换,而不删除以前的变换。您是说
self.transform = CGAffineTransformMakeScale(multiplier, multiplier)
及
这些行指定了self
将具有的整个变换。因此,它们将删除所有现有变换,包括最初将标签倒置的变换,并将其替换为指定的变换
如果那不是你想做的,不要那样做。例如,不要调用CGAffineTransformMakeScale
,而是调用CGAffineTransformScale
,这样可以从视图上的现有变换开始,并将一个比例变换连接到该变换。您是说
self.transform = CGAffineTransformMakeScale(multiplier, multiplier)
及
这些行指定了self
将具有的整个变换。因此,它们将删除所有现有变换,包括最初将标签倒置的变换,并将其替换为指定的变换
如果那不是你想做的,不要那样做。例如,不要调用
CGAffineTransformMakeScale
,而是调用CGAffineTransformScale
,这样可以从视图上的现有变换开始,并将缩放变换连接到该变换。在数据更改时翻转标签
斯威夫特4
我已将标签从上到下翻转,其中我的标签声明为:
@IBOutlet var cartCountLbl:UILabel在“viewDidLoad()”中编码>
使用此方法调用函数
self.perform(#选择器(self.flip),with:nil,afterDelay:0)
翻转方法声明为:
@objc func flip() {
let transitionOptions: UIViewAnimationOptions = [.transitionFlipFromTop, .showHideTransitionViews]
UIView.transition(with: cartCountLbl, duration: 1.0, options: transitionOptions, animations: {
})
}
数据更改时翻转标签
斯威夫特4
我已将标签从上到下翻转,其中我的标签声明为:
@IBOutlet var cartCountLbl:UILabel在“viewDidLoad()”中编码>
使用此方法调用函数
self.perform(#选择器(self.flip),with:nil,afterDelay:0)
翻转方法声明为:
@objc func flip() {
let transitionOptions: UIViewAnimationOptions = [.transitionFlipFromTop, .showHideTransitionViews]
UIView.transition(with: cartCountLbl, duration: 1.0, options: transitionOptions, animations: {
})
}
PS:有人知道为什么我帖子的第一行说“大家好”,不会出现吗?PS:有人知道为什么我帖子的第一行说“大家好”,不会出现吗?啊,好吧,我没想过!似乎是合法的,谢谢。那我该怎么办<代码>CGAffineTransformMakeScale(1,1)
?编辑:CGAffineTransformMakeScale(1,1)
做同样的事情。你的代码很傻。不需要链接两个动画。只要做一个自动反转动画同时,我相信我已经回答了你的问题。你问:“你知道为什么会这样吗?”;我已经解释了原因。我尝试使用.AutoReverse
选项或cGraffineTransformMakeScale(1,1)
,但问题仍然存在。。。我不知道我该怎么做。。。您是否有其他可以强制视图返回其原始帧的内容?抱歉,我的回答不够完整。这一行也是错误的:self.transform=CGAffineTransformMakeScale(乘数,乘数)
您正在设置变换,这也意味着删除已应用的倒置旋转变换。您要做的是应用一个变换,该变换是现有旋转和新添加比例的组合。你看到了吗?然后自动转换到裸旋转,你就完成了。谢谢!我理解了问题并解决了它。啊,好吧,我没有想到这一点!似乎是合法的,谢谢。那我该怎么办<代码>CGAffineTransformMakeScale(1,1)
?编辑:CGAffineTransformMakeScale(1,1)
做同样的事情。你的代码很傻。不需要链接两个动画。只要做一个自动反转动画同时,我相信我已经回答了你的问题。你问:“你知道为什么会这样吗?”;我已经解释了原因。我尝试使用.AutoReverse
选项或cGraffineTransformMakeScale(1,1)
,但问题仍然存在。。。我不知道我该怎么做。。。您是否有其他可以强制视图返回其原始帧的内容?抱歉,我的回答不够完整。这一行也是错误的:self.transform=CGAffineTransformMakeScale(乘数,乘数)
您正在设置变换,这也意味着删除已应用的倒置旋转变换。您要做的是应用一个变换,该变换是现有旋转和新添加比例的组合。你看到了吗?然后自动转换到裸旋转,你就完成了。谢谢!我理解了问题并解决了它。你能进一步解释你的答案吗?我已经改变了我的答案,你现在会理解的@sirpools你能进一步解释你的答案吗?我已经改变了我的答案,你现在会理解的@sirpools