Make a simple fade in animation in Swift?
The problem is that you're trying start the animation too early in the view controller's lifecycle. In viewDidLoad
, the view has just been created, and hasn't yet been added to the view hierarchy, so attempting to animate one of its subviews
at this point produces bad results.
What you really should be doing is continuing to set the alpha of the view in viewDidLoad
(or where you create your views), and then waiting for the viewDidAppear
: method to be called. At this point, you can start your animations without any issue.
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIView.animate(withDuration: 1.5) {
self.myFirstLabel.alpha = 1.0
self.myFirstButton.alpha = 1.0
self.mySecondButton.alpha = 1.0
}
}
Swift - How does one animate (pulse between opacity 0 and 1) a NSImage in the menu bar?
Based on @Walt 's answer, I could figure out the macOS equivalent:
func animateMenubarIcon() {
NSAnimationContext.runAnimationGroup { context in
context.duration = 1
self.statusBarItem?.button?.animator().alphaValue = 0
} completionHandler: {
NSAnimationContext.runAnimationGroup { context in
context.duration = 1
self.statusBarItem?.button?.animator().alphaValue = 1
} completionHandler: {
self.animateMenubarIcon()
}
}
}
This will animate the button on a loop
How do you do successive animations?
So I wasn't able to incorporate the label into the keyframe animation so I just set a delay to the bale changing and it took a little tweaking but here is what I came up with
//CHANGE LABEL ON TIMER
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 13.5)
{ [self] in
self.labelNegBeliefFinal.text = self.posBeliefLabelGlowerText
}
Here is the glow loop and size loop as before, unrelated to the tween
//AniamtionGlowLOOP
UIView.animate(withDuration: 6, delay: 0, options: [.autoreverse, .repeat],
animations: { self.labelNegBeliefFinal.layer.shadowOpacity = 5.0 })
//AnimationBreathSizeLOOP
UIView.animate(withDuration: 6, delay: 0, options: [.autoreverse, .repeat],
animations: { self.labelNegBeliefFinal.transform = CGAffineTransform(scaleX:
1.3, y: 1.3) })
// }
Here is the tween code I came up with thanks to Matt for the point in the right direction. Had no idea you could tween in SwiftUI. One thing that threw me off is that if the duration is 30sec, relative duration being set to 0.5 is equal to 15 seconds as it's 0.5 of 30 seconds. Some of my tweens didn't seem to work because I didn't realize that.
UIView.animateKeyframes(withDuration: 30.0,
delay: 0,
options: [ ],
animations: {
UIView.addKeyframe(withRelativeStartTime:
0,
relativeDuration: 0.5,
animations: { self.labelNegBeliefFinal.alpha = 0 })
UIView.addKeyframe(withRelativeStartTime:
0.5,
relativeDuration: 0.5,
animations: { self.labelNegBeliefFinal.alpha = 1 })
},
completion: nil)
}
}
Glow style I got from a different post
//GLOW
extension UILabel {
func UILableTextShadow1(color: UIColor){
textColor = UIColor.systemTeal
layer.shadowColor = UIColor.systemTeal.cgColor
layer.masksToBounds = false
layer.shadowOffset = .zero
layer.shouldRasterize = true
layer.rasterizationScale = UIScreen.main.scale
layer.shadowRadius = 5.0
layer.shadowOpacity = 00.7
}
}
SwiftUI Text animation on opacity does not work
If you want to animate on opacity you need to change opacity value on your text element.
code example:
@State private var textValue: String = "Sample Data"
@State private var opacity: Double = 1
var body: some View {
VStack{
Text("\(textValue)")
.opacity(opacity)
Button("Next") {
withAnimation(.easeInOut(duration: 0.5), {
self.opacity = 0
})
self.textValue = "uuuuuuuuuuuuuuu"
withAnimation(.easeInOut(duration: 1), {
self.opacity = 1
})
}
}
}
Related Topics
Concatenate Literal with Optional String
How to Handle Parameter Validation Swift
Swiftui - Make Toolbar's Navigationlink Use Detail View
Swift For-In Loop with Enumerate on Custom Array2D Class
How to Move Platform with Velocity
In Swift, Can One Use a String to Access a Struct Property
Why Strings Are Not Equal in My Case
Swift Lazy Stored Property Versus Regular Stored Property When Using Closure
How to Use Spritekit Archives with Skspritenode Subclasses
Swift: How to Fix Infinite Loop When Adding a Value to a Firebase Variable
Why Upload Alamofire Background Request Don't Executes in Background
Deep Copy of Cmimagebuffer or Cvimagebuffer
Why Does Somestruct() Is Anyobject Return True
What's Wrong with My #If Target_Os_Simulator Code for Realm Path Definition
Swift 2: Invalid Conversion from Throwing Function of Type to Non-Throwing Function
Swift Unsafemutablepointer: Must I Call Deinitialize Before Deallocate