animateWithDuration() 在应用程序退出后停止
animateWithDuration() stops after app exit
我在我的 UIButton 中加入了发光效果(代码取自 https://github.com/bc-oscar/Glowing-UIButton)。代码位于单独的 swift 文件中,按钮在视图控制器中定义为 'GlowingButton' 类型,并更改为从身份检查器中的自定义 class 派生。当应用程序第一次 运行 时效果有效,但在退出后返回时停止?
import UIKit
class GlowingButton: UIButton {
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
// Drawing code
}
*/
// Creates a glow effect in the button by setting its layer shadow properties
func startGlowWithCGColor (growColor:CGColor) {
self.layer.shadowColor = growColor
self.layer.shadowRadius = 10.0
self.layer.shadowOpacity = 1.0
self.layer.shadowOffset = CGSizeZero
self.layer.masksToBounds = false
// Autoreverse, Repeat and allow user interaction.
UIView.animateWithDuration(1.0, delay: 0, options: [UIViewAnimationOptions.Autoreverse, UIViewAnimationOptions.CurveEaseInOut, UIViewAnimationOptions.Repeat, UIViewAnimationOptions.AllowUserInteraction],
animations: { () -> Void in
// Make it a 15% bigger
self.transform = CGAffineTransformMakeScale(1.15, 1.15)
}) { (Bool) -> Void in
// Return to original size
self.layer.shadowRadius = 0.0
self.transform = CGAffineTransformMakeScale(1.0, 1.0)
}
}
// Removes the animation
func stopGlow () {
self.layer.shadowRadius = 0.0
self.transform = CGAffineTransformMakeScale(1.0, 1.0)
self.layer.removeAllAnimations()
self.layer.masksToBounds = true
}
}
那是因为您在 viewDidLoad
中调用 startGlowWithCGColor
,请尝试将其放入 viewDidAppear
我不完全明白是什么原因造成的,但似乎退出应用程序会使该功能卡在 self.transform = CGAffineTransformMakeScale(1.0, 1.0)
。用 self.startGlowWithCGColor(growColor)
递归调用函数重新启动效果。
我在我的 UIButton 中加入了发光效果(代码取自 https://github.com/bc-oscar/Glowing-UIButton)。代码位于单独的 swift 文件中,按钮在视图控制器中定义为 'GlowingButton' 类型,并更改为从身份检查器中的自定义 class 派生。当应用程序第一次 运行 时效果有效,但在退出后返回时停止?
import UIKit
class GlowingButton: UIButton {
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
// Drawing code
}
*/
// Creates a glow effect in the button by setting its layer shadow properties
func startGlowWithCGColor (growColor:CGColor) {
self.layer.shadowColor = growColor
self.layer.shadowRadius = 10.0
self.layer.shadowOpacity = 1.0
self.layer.shadowOffset = CGSizeZero
self.layer.masksToBounds = false
// Autoreverse, Repeat and allow user interaction.
UIView.animateWithDuration(1.0, delay: 0, options: [UIViewAnimationOptions.Autoreverse, UIViewAnimationOptions.CurveEaseInOut, UIViewAnimationOptions.Repeat, UIViewAnimationOptions.AllowUserInteraction],
animations: { () -> Void in
// Make it a 15% bigger
self.transform = CGAffineTransformMakeScale(1.15, 1.15)
}) { (Bool) -> Void in
// Return to original size
self.layer.shadowRadius = 0.0
self.transform = CGAffineTransformMakeScale(1.0, 1.0)
}
}
// Removes the animation
func stopGlow () {
self.layer.shadowRadius = 0.0
self.transform = CGAffineTransformMakeScale(1.0, 1.0)
self.layer.removeAllAnimations()
self.layer.masksToBounds = true
}
}
那是因为您在 viewDidLoad
中调用 startGlowWithCGColor
,请尝试将其放入 viewDidAppear
我不完全明白是什么原因造成的,但似乎退出应用程序会使该功能卡在 self.transform = CGAffineTransformMakeScale(1.0, 1.0)
。用 self.startGlowWithCGColor(growColor)
递归调用函数重新启动效果。