Bird
Raised Fist0
iOS Swiftmobile~5 mins

Custom animation timing in iOS Swift - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is custom animation timing in iOS development?
Custom animation timing lets you control how fast or slow an animation runs at different points, instead of moving at a steady speed.
Click to reveal answer
beginner
Which class in Swift lets you create custom timing curves for animations?
The <code>CAMediaTimingFunction</code> class lets you define custom timing curves using control points.
Click to reveal answer
intermediate
What does the controlPoints parameter in CAMediaTimingFunction(controlPoints:_:_:_:) represent?
It represents four floating-point values that define the shape of the cubic Bézier curve controlling animation speed.
Click to reveal answer
intermediate
How does a UIViewPropertyAnimator help with custom animation timing?
It allows you to create animations with custom timing curves and control their progress interactively.
Click to reveal answer
beginner
Why use custom animation timing instead of default easing?
Custom timing makes animations feel more natural or match your app’s style by speeding up or slowing down parts of the animation.
Click to reveal answer
Which class is used to define a custom timing curve for Core Animation?
ACATransaction
BUIViewAnimationOptions
CCAMediaTimingFunction
DUISpringTimingParameters
What shape does the custom timing curve in CAMediaTimingFunction represent?
ACubic Bézier curve
BCircle
CLinear line
DParabola
Which Swift class allows interactive control of animation progress with custom timing?
AUIViewPropertyAnimator
BCABasicAnimation
CUIViewAnimationOptions
DCAKeyframeAnimation
What does a timing curve control in an animation?
AThe color of the animation
BThe speed of the animation over time
CThe size of the animated view
DThe animation delay
Which method creates a CAMediaTimingFunction with custom control points?
ACAMediaTimingFunction.init()
BCAMediaTimingFunction(name:)
CCAMediaTimingFunction.default()
DCAMediaTimingFunction(controlPoints:_:_:_:)
Explain how you would create a custom animation timing curve in Swift using CAMediaTimingFunction.
Think about how control points shape the animation speed.
You got /4 concepts.
    Describe the benefits of using UIViewPropertyAnimator for animations with custom timing.
    Consider how user interaction might affect animation.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the .curveEaseIn animation option do in UIView animations?
      easy
      A. Starts the animation quickly and then slows down.
      B. Starts the animation slowly and then speeds up.
      C. Keeps the animation speed constant throughout.
      D. Reverses the animation direction automatically.

      Solution

      1. Step 1: Understand UIView animation curves

        UIView animation curves control how the animation speed changes over time.
      2. Step 2: Identify the effect of .curveEaseIn

        .curveEaseIn means the animation starts slowly and accelerates towards the end.
      3. Final Answer:

        Starts the animation slowly and then speeds up. -> Option B
      4. Quick Check:

        .curveEaseIn = slow start, speed up [OK]
      Hint: EaseIn means slow start, speed up later [OK]
      Common Mistakes:
      • Confusing .curveEaseIn with .curveEaseOut
      • Thinking it keeps constant speed
      • Assuming it reverses animation
      2. Which of the following is the correct syntax to animate a view's alpha to 0.5 over 0.3 seconds with ease-out timing?
      easy
      A. UIView.animate(duration: 0.3, options: .easeOut) { view.alpha = 0.5 }
      B. UIView.animate(withDuration: 0.3, options: .curveEaseIn) { view.alpha = 0.5 }
      C. UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut) { view.alpha = 0.5 }
      D. UIView.animate(withDuration: 0.3) { view.alpha = 0.5, options: .curveEaseOut }

      Solution

      1. Step 1: Recall UIView.animate syntax

        The correct method signature is UIView.animate(withDuration:delay:options:animations:completion:). Options must be passed as a parameter.
      2. Step 2: Check each option for syntax correctness

        UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut) { view.alpha = 0.5 } uses correct method name, parameters, and .curveEaseOut option. Others have wrong method names or misplaced options.
      3. Final Answer:

        UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut) { view.alpha = 0.5 } -> Option C
      4. Quick Check:

        Correct UIView.animate syntax = UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut) { view.alpha = 0.5 } [OK]
      Hint: Use withDuration and options parameters correctly [OK]
      Common Mistakes:
      • Using wrong method name like animate(duration:)
      • Placing options inside animation block
      • Forgetting delay parameter
      3. What will be the visible effect of this code snippet?
      UIView.animate(withDuration: 1.0, delay: 0, options: [.curveEaseInOut]) {
        view.frame.origin.x += 100
      }
      medium
      A. The view moves 100 points to the right, starting fast and slowing down.
      B. The view moves 100 points to the right at a constant speed.
      C. The view jumps instantly 100 points to the right without animation.
      D. The view moves 100 points to the right, starting slow, speeding up, then slowing down.

      Solution

      1. Step 1: Understand .curveEaseInOut timing

        .curveEaseInOut means the animation starts slowly, speeds up in the middle, then slows down at the end.
      2. Step 2: Analyze the animation effect

        The view's x position increases by 100 points over 1 second with ease-in-out timing, so it moves smoothly with acceleration and deceleration.
      3. Final Answer:

        The view moves 100 points to the right, starting slow, speeding up, then slowing down. -> Option D
      4. Quick Check:

        .curveEaseInOut = slow start & end, fast middle [OK]
      Hint: EaseInOut means slow start and end, fast middle [OK]
      Common Mistakes:
      • Thinking it moves at constant speed
      • Confusing easeInOut with easeIn or easeOut
      • Expecting instant jump without animation
      4. Identify the error in this Core Animation timing code:
      let animation = CABasicAnimation(keyPath: "opacity")
      animation.duration = 1.0
      animation.timingFunction = CAMediaTimingFunction(name: .easeIn)
      animation.fromValue = 1.0
      animation.toValue = 0.0
      view.layer.add(animation, forKey: "fade")
      medium
      A. The animation is missing a fillMode to keep final state.
      B. The timingFunction property expects a string, not CAMediaTimingFunction.
      C. The keyPath "opacity" is invalid for CABasicAnimation.
      D. The timing function name should be .easeInEaseOut, not .easeIn.

      Solution

      1. Step 1: Check timingFunction usage

        Using CAMediaTimingFunction(name: .easeIn) is correct and supported.
      2. Step 2: Identify missing fillMode

        Without setting fillMode and isRemovedOnCompletion, the animation resets after finishing, so the view returns to original opacity.
      3. Final Answer:

        The animation is missing a fillMode to keep final state. -> Option A
      4. Quick Check:

        Missing fillMode causes animation to revert [OK]
      Hint: Add fillMode and isRemovedOnCompletion to keep final state [OK]
      Common Mistakes:
      • Assuming .easeIn is invalid timing function name
      • Thinking timingFunction needs a string
      • Ignoring fillMode and completion behavior
      5. You want to create a custom animation that moves a view along a path with a non-linear speed, speeding up then slowing down repeatedly. Which approach best achieves this?
      hard
      A. Use CAKeyframeAnimation with a custom timing function and path to control speed and position.
      B. Use CABasicAnimation with a custom CAMediaTimingFunction using control points for the speed curve.
      C. Use UIView.animate with linear curve and manually update position in a timer.
      D. Use UIView.animate with .curveEaseInOut option repeatedly in a loop.

      Solution

      1. Step 1: Understand animation requirements

        The animation needs to follow a path and have complex speed changes (speeding up and slowing down repeatedly).
      2. Step 2: Evaluate animation options

        CAKeyframeAnimation allows animating along a path and supports custom timing functions for complex speed control, making it ideal here.
      3. Final Answer:

        Use CAKeyframeAnimation with a custom timing function and path to control speed and position. -> Option A
      4. Quick Check:

        CAKeyframeAnimation + custom timing = best for complex path and speed [OK]
      Hint: Use CAKeyframeAnimation for path + custom speed control [OK]
      Common Mistakes:
      • Using UIView.animate for complex path animations
      • Assuming CABasicAnimation can follow a path
      • Trying to manually update position with timers
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard