How to present a ViewController on Half screen

2 min read 07-10-2024
How to present a ViewController on Half screen


Presenting ViewControllers Halfway: A Comprehensive Guide

Ever wished you could present a view controller on-screen, but instead of taking over the entire display, it would gracefully occupy only the top half? This approach offers a unique user experience, perfect for displaying menus, settings, or even interactive elements without completely obscuring the main content.

This article will guide you through the process of achieving this half-screen presentation effect in iOS development.

The Problem

By default, iOS presents view controllers fullscreen, covering the entire screen. The challenge lies in customizing this behavior to achieve a half-screen presentation.

The Solution

We'll use a combination of Presentation Style and Transition Style in conjunction with custom frame adjustments to achieve the desired half-screen effect. Here's a basic code example:

// In the presenting ViewController:
let vc = SecondViewController() // Replace with your desired ViewController
vc.modalPresentationStyle = .formSheet
vc.modalTransitionStyle = .coverVertical // or .crossDissolve
vc.view.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height / 2) 

present(vc, animated: true) 

Explanation

  1. modalPresentationStyle = .formSheet: This presentation style gives us the flexibility to customize the size and position of the presented view controller.
  2. modalTransitionStyle: This controls the animation used when presenting and dismissing the view controller. Here, we use .coverVertical for a simple sliding effect.
  3. view.frame: We manually set the height of the presented view controller to half the height of the screen. This is the core step in achieving the half-screen effect.

Customization

You can further customize the appearance:

  • Rounded Corners: Apply cornerRadius to the presented view controller's view to create a rounded edge.
  • Shadows: Add a shadow to the presented view controller to enhance visual depth.
  • Custom Transitions: Explore other modalTransitionStyle options or implement your own custom transitions for a more dynamic presentation.
  • Constraints: Instead of directly setting the frame, you could use constraints to dynamically adjust the height of the presented view controller.

Additional Considerations

  • Orientation: Adjust the frame calculations to account for different device orientations (portrait or landscape).
  • Interactive Dismissal: Consider adding an interactive dismissal gesture (e.g., pan) to provide a seamless user experience.

Example Scenario

Imagine a social media app where users can create posts. Instead of using a full-screen modal for creating a post, you could present a half-screen view with a form for writing the post, keeping the existing feed visible for context.

Conclusion

By combining presentation styles, transition styles, and custom frame adjustments, you can create a unique and engaging user experience by presenting view controllers halfway on the screen. This technique offers flexibility and visual appeal, allowing you to enhance the user interface of your iOS applications.

Remember: This guide provides a basic foundation. Experiment with different techniques and customize your presentation to fit your specific needs and design preferences.

Resources: