[Swift4] U I P op ver Presentation Controller를 사용하여 아이폰/iPad 두 가지를 지원하는 Popover를 출시했습니다.

6081 단어 SwiftiOS
아이폰/아이패드에 대응하는 두 가지 Popover를 시도했다.
※ 잡으면 그림자 부분이 부자연스러워 보이지만, 실제로는 개의치 않으니 안심하세요.

컨디션


Swift4.2
Xcode10.0

코드


나는 복제품으로 움직이고 싶다.
ViewController
import UIKit

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate{

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    @IBAction func btnTapped(_ sender: UIButton) {
        let contentVC = ContentViewController()
        // スタイルの指定
        contentVC.modalPresentationStyle = .popover
        // サイズの指定
        contentVC.preferredContentSize = CGSize(width: 200, height: 200)
        // 表示するViewの指定
        contentVC.popoverPresentationController?.sourceView = view
        // ピヨッと表示する位置の指定
        contentVC.popoverPresentationController?.sourceRect = sender.frame
        // 矢印が出る方向の指定
        contentVC.popoverPresentationController?.permittedArrowDirections = .any
        // デリゲートの設定
        contentVC.popoverPresentationController?.delegate = self
        //表示
        present(contentVC, animated: true, completion: nil)
    }

    // iPhoneで表示させる場合に必要
    func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
        return .none
    }
}
포인트는 아이폰도 뜨고 싶을 때UIPopoverPresentationControllerDelegate로 답장UIModalPresentationStyle.none하는 것이다..permittedArrowDirections,.up,.down,.left,.right 등을 지정하여 마음대로 판단해서 사용할 수 있다.any,느낌이 좋은 곳에서 화살표를 보낸다.
위아래 두 자리에서 꺼내려면 [.up, .down] 순서대로 지정할 수 있습니다.
ContentViewController
import UIKit

class ContentViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        view.backgroundColor = UIColor.red
    }
}
ContentViewController는 배경색만 설정합니다.

참고 자료


Popover의 두 가지 구현 방법 비교

좋은 웹페이지 즐겨찾기