0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Swift] ハーフモーダルを実装

Posted at

Show Modalボタンを押下すると2枚目のようにハーフモーダルが表示され、cancelボタンクリックかモーダルを下にドラッグすると1つ目の画面に戻るような処理の実装。

全体のコード

ViewController.swift
import UIKit

class ViewController: UIViewController {
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let next = segue.destination
        if let sheet = next.sheetPresentationController {
            sheet.detents = [.medium()]
            sheet.largestUndimmedDetentIdentifier = .medium
            sheet.preferredCornerRadius = 40.0
            sheet.prefersGrabberVisible = true
        }
    }
    @IBAction func exit(segue: UIStoryboardSegue) {
        
    }
}
ModalViewController.swift
import UIKit
class ModalViewController: UIViewController {
  
}

手順

MainのViewController画面にUIButtonを設置。Show ModalとTitleを変更

UIViewControllerを追加し、UIButtonからcontrolを押しながらUIViewControllerにドラッグ。present modallyを選択し、追加したUIViewControllerの背景色をgrayカラーに。
モーダルの右上にcancelボタンをUIButtonで程よい制約で設置しておく。
スクリーンショット 2023-11-10 0.33.35.png

New FileからCocoa Touch ClassでSubclass of: UIViewControllerに設定し、ModalViewControllerを作成。
作成後、Mainストーリーボードで追加したViewControllerのClass名をModalViewControllerに設定。
スクリーンショット 2023-11-10 0.39.54.png

ここでViewControllerにハーフモーダルと右上のcancelボタンに対しての挙動を記述

ViewController.swift
import UIKit

class ViewController: UIViewController {
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let next = segue.destination
        if let sheet = next.sheetPresentationController {
            //モーダルを画面の半分まで表示
            sheet.detents = [.medium()]
            sheet.largestUndimmedDetentIdentifier = .medium
            sheet.preferredCornerRadius = 40.0
            sheet.prefersGrabberVisible = true
        }
    }

    //cancelボタンで1つ目の画面に戻るための処理
    @IBAction func exit(segue: UIStoryboardSegue) {
        
    }
}

ここでcancelボタンが挙動するように、controlを押しながらドラッグでExitボタンと紐付け。
exitWithSegue:を選択。

これで実行すると、Show Modalを押下するとハーフモーダルが出現し、ドラッグとcancelボタンで1つ目の画面に戻ることができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?