[Swift4] U I P op ver Presentation Controller를 사용하여 아이폰/iPad 두 가지를 지원하는 Popover를 출시했습니다.
※ 잡으면 그림자 부분이 부자연스러워 보이지만, 실제로는 개의치 않으니 안심하세요.
컨디션
Swift4.2
Xcode10.0
코드
나는 복제품으로 움직이고 싶다.
ViewControllerimport 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]
순서대로 지정할 수 있습니다.
ContentViewControllerimport UIKit
class ContentViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.backgroundColor = UIColor.red
}
}
ContentViewController는 배경색만 설정합니다.
참고 자료
Popover의 두 가지 구현 방법 비교
Reference
이 문제에 관하여([Swift4] U I P op ver Presentation Controller를 사용하여 아이폰/iPad 두 가지를 지원하는 Popover를 출시했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/orimomo/items/1a44337de974a72b6266
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
나는 복제품으로 움직이고 싶다.
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의 두 가지 구현 방법 비교
Reference
이 문제에 관하여([Swift4] U I P op ver Presentation Controller를 사용하여 아이폰/iPad 두 가지를 지원하는 Popover를 출시했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/orimomo/items/1a44337de974a72b6266
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Swift4] U I P op ver Presentation Controller를 사용하여 아이폰/iPad 두 가지를 지원하는 Popover를 출시했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/orimomo/items/1a44337de974a72b6266텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)