我在Swift 2中遇到了一个无法修复的问题......
我的it.id
和UILabel
都是颠倒的。我添加了UIView
的扩展名来执行动画(增长然后缩小),当我点击按钮时执行该动画。但是当动画执行时,UIView
在动画期间会回转180°,而UILabel
却没有......对于为什么会发生这种情况有任何疑问?
以下是代码:
UIView
扩展程序:
UIView's
我如何翻转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
}
})
}
和UIView
:
UILabel
我如何调用动画:
label.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
view.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
答案:(亚当)
我正在覆盖标签的transform属性,从而删除了先前的转换(旋转)。您应该使用let multiplier = 1.5 as CGFloat
let animationTime = 0.5 as NStimeInterval
label.animateBounce(1.5, duration: animationTime)
view.animateBounce(1.5, duration: animationTime)
添加添加新转换而不删除以前的转换。
答案 0 :(得分:1)
你在说
self.transform = CGAffineTransformMakeScale(multiplier, multiplier)
和
self.transform = CGAffineTransformIdentity
这些行指定self
将具有的整个变换。因此,他们删除所有现有的变换,包括最初将标签翻转过来的变换,将其替换为您指定的变换。
如果那不是你想做的事,那就别这样做了。例如,不要调用CGAffineTransformMakeScale
,而是调用CGAffineTransformScale
,这样就可以启动并使用现有的转换视频并连接< / em>比例转换为。
答案 1 :(得分:1)
当数据更改时翻转标签 迅速4。
我已将标签从顶部翻转到底部,其中我的标签声明为:
@IBOutlet var cartCountLbl: UILabel!
在“ viewDidLoad()”中。
使用此方法调用函数
self.perform(#selector(self.flip), with: nil, afterDelay: 0)
flip方法声明为:
@objc func flip() {
let transitionOptions: UIViewAnimationOptions = [.transitionFlipFromTop, .showHideTransitionViews]
UIView.transition(with: cartCountLbl, duration: 1.0, options: transitionOptions, animations: {
})
}