Bird
Raised Fist0
iOS Swiftmobile~20 mins

Transition effects in iOS Swift - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Transition Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate
2:00remaining
What is the visible effect of this transition code?
Consider this Swift code snippet for a view controller transition. What visual effect will the user see when this transition runs?
iOS Swift
let transition = CATransition()
transition.duration = 0.5
transition.type = CATransitionType.push
transition.subtype = CATransitionSubtype.fromRight
view.window?.layer.add(transition, forKey: nil)
navigationController?.popViewController(animated: false)
AThe new screen slides in from the right side over the current screen.
BThe new screen fades in over the current screen.
CThe new screen slides in from the left side over the current screen.
DThe new screen zooms in from the center.
Attempts:
2 left
💡 Hint
Look at the transition type and subtype properties to understand the direction and style.
❓ lifecycle
intermediate
2:00remaining
When does the transition animation start in this code?
Given this code snippet inside a UIViewController, at what point does the transition animation begin?
iOS Swift
override func viewWillDisappear(_ animated: Bool) {
  super.viewWillDisappear(animated)
  let transition = CATransition()
  transition.duration = 0.3
  transition.type = CATransitionType.fade
  view.window?.layer.add(transition, forKey: nil)
}
ARight after the view has disappeared from the screen.
BRight before the view disappears from the screen.
CWhen the view appears on the screen.
DWhen the view is loaded into memory.
Attempts:
2 left
💡 Hint
Check which lifecycle method is overridden and when it is called.
📝 Syntax
advanced
2:00remaining
What error does this transition code produce?
Analyze this Swift code snippet for a transition. What error will it cause when compiled?
iOS Swift
let transition = CATransition()
transition.duration = 0.4
transition.type = "slide"
view.window?.layer.add(transition, forKey: nil)
ASyntax error: Missing parentheses in method call.
BRuntime error: Unknown transition type causes crash.
CNo error, code runs and shows slide transition.
DType error: Cannot assign String to CATransitionType.
Attempts:
2 left
💡 Hint
Check the type of the 'type' property and what values it accepts.
❓ navigation
advanced
2:00remaining
Which option correctly adds a custom transition when pushing a new view controller?
You want to push a new view controller with a fade transition. Which code snippet correctly achieves this?
A
let transition = CATransition()
transition.duration = 0.5
transition.type = CATransitionType.fade
view.layer.add(transition, forKey: nil)
navigationController?.pushViewController(newVC, animated: false)
B
let transition = CATransition()
transition.duration = 0.5
transition.type = CATransitionType.fade
navigationController?.pushViewController(newVC, animated: true)
navigationController?.view.layer.add(transition, forKey: nil)
C
let transition = CATransition()
transition.duration = 0.5
transition.type = CATransitionType.fade
navigationController?.view.layer.add(transition, forKey: nil)
navigationController?.pushViewController(newVC, animated: false)
D
let transition = CATransition()
transition.duration = 0.5
transition.type = CATransitionType.fade
newVC.view.layer.add(transition, forKey: nil)
navigationController?.pushViewController(newVC, animated: false)
Attempts:
2 left
💡 Hint
The transition must be added to the navigation controller's view layer before pushing without animation.
🧠 Conceptual
expert
2:00remaining
Why might a custom CATransition not appear when pushing a view controller?
You added a CATransition to the window's layer before pushing a view controller, but the animation does not show. What is the most likely reason?
AThe pushViewController call uses animated: true, which overrides the custom transition.
BThe window's layer cannot display animations.
CThe CATransition type is not set, so no animation occurs.
DThe new view controller's view is nil at the time of transition.
Attempts:
2 left
💡 Hint
Check the animated parameter in the navigation call.

Practice

(1/5)
1. What is the main purpose of using CATransition in iOS Swift development?
easy
A. To manage data storage
B. To handle user input events
C. To perform network requests
D. To create custom animations when switching between views

Solution

  1. Step 1: Understand the role of CATransition

    CATransition is a Core Animation class used to animate changes between views or layers.
  2. Step 2: Identify its purpose in UI

    It helps create smooth visual effects when switching screens or views, improving user experience.
  3. Final Answer:

    To create custom animations when switching between views -> Option D
  4. Quick Check:

    CATransition = Custom view animations [OK]
Hint: CATransition = animation for view changes [OK]
Common Mistakes:
  • Confusing CATransition with data handling classes
  • Thinking it manages user input
  • Assuming it handles networking
2. Which of the following is the correct way to set the transition type to a fade effect using CATransition in Swift?
easy
A. transition.type = CATransitionType.fade
B. transition.type = .fade
C. transition.type = "fade"
D. transition.type = Fade

Solution

  1. Step 1: Recall CATransition type syntax

    In Swift, CATransition.type is a String property. The value for a fade effect is "fade".
  2. Step 2: Check each option

    A: CATransitionType.fade - no such type exists. B: .fade - invalid syntax. D: Fade - undefined. C is correct.
  3. Final Answer:

    transition.type = "fade" -> Option C
  4. Quick Check:

    Enum cases use dot syntax = "fade" [OK]
Hint: Use string "fade" for fade transition [OK]
Common Mistakes:
  • Using non-existent CATransitionType.fade
  • Using invalid dot syntax .fade
  • Using capitalized undefined Fade
3. What will be the visible effect when running this Swift code snippet?
let transition = CATransition()
transition.type = "push"
transition.subtype = "fromRight"
view.layer.add(transition, forKey: "transition")
view.backgroundColor = .red
medium
A. The view background color changes instantly with no animation
B. The view background color changes with a push animation from the right
C. The view background color fades in smoothly
D. The app crashes due to invalid transition subtype

Solution

  1. Step 1: Analyze transition type and subtype

    The transition type is "push" and subtype is "fromRight", meaning the new content will push in from the right side.
  2. Step 2: Understand effect on view background color

    Adding the transition to the layer and then changing backgroundColor triggers the push animation showing the color change.
  3. Final Answer:

    The view background color changes with a push animation from the right -> Option B
  4. Quick Check:

    Push + fromRight = push animation from right [OK]
Hint: Push + fromRight means slide in from right [OK]
Common Mistakes:
  • Expecting fade instead of push animation
  • Thinking background changes instantly without animation
  • Assuming invalid subtype causes crash
4. Identify the error in this Swift code that tries to add a transition effect:
let transition = CATransition()
transition.type = "moveIn"
view.layer.add(transition, forKey: nil)
view.backgroundColor = .blue
medium
A. The transition key should not be nil; use a string key instead
B. The transition type "moveIn" is invalid
C. The transition must be added before changing the background color
D. Using nil for the key causes the transition not to work

Solution

  1. Step 1: Check the add method parameters

    The add method requires a non-nil string key to identify the animation. Passing nil disables the animation.
  2. Step 2: Confirm transition type validity

    "moveIn" is a valid transition type, so no error there.
  3. Final Answer:

    The transition key should not be nil; use a string key instead -> Option A
  4. Quick Check:

    Animation key must be non-nil string [OK]
Hint: Always provide a string key when adding animations [OK]
Common Mistakes:
  • Passing nil key disables animation silently
  • Confusing transition type validity
  • Thinking order of adding transition matters
5. You want to create a custom transition that slides a new view controller from the bottom with a duration of 0.5 seconds. Which code snippet correctly sets up this transition effect before presenting the new view controller?
hard
A. let transition = CATransition() transition.duration = 0.5 transition.type = "push" transition.subtype = "fromBottom" view.window?.layer.add(transition, forKey: "transition") present(newVC, animated: false)
B. let transition = CATransition() transition.duration = 0.5 transition.type = "fade" transition.subtype = "fromBottom" view.layer.add(transition, forKey: nil) present(newVC, animated: true)
C. let transition = CATransition() transition.duration = 0.5 transition.type = "moveIn" transition.subtype = "fromTop" view.window?.layer.add(transition, forKey: "slide") present(newVC, animated: true)
D. let transition = CATransition() transition.duration = 0.5 transition.type = "push" transition.subtype = "fromBottom" view.layer.add(transition, forKey: "transition") present(newVC, animated: true)

Solution

  1. Step 1: Choose correct transition type and subtype

    To slide from bottom, use "push" type with "fromBottom" subtype.
  2. Step 2: Add transition to window layer and disable default animation

    Adding to view.window?.layer ensures whole screen transition. Presenting with animated: false disables default animation so custom one shows.
  3. Final Answer:

    Use "push" fromBottom on window layer and present with animated false -> Option A
  4. Quick Check:

    Custom slide from bottom = "push" + "fromBottom" + animated false [OK]
Hint: Add transition to window layer and present with animated false [OK]
Common Mistakes:
  • Adding transition to view.layer instead of window.layer
  • Using animated: true which overrides custom animation
  • Using wrong transition type or subtype
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