Swift 4 tamamen kod çalışıyor. Yani burada 250x250 büyüklüğü ile pop-up pencere göreceksiniz:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// in case if you don't want to make it via IBAction
button.addTarget(self, action: #selector(tapped), for: .touchUpInside)
}
@objc
private func tapped() {
guard let popVC = storyboard?.instantiateViewController(withIdentifier: "popVC") else { return }
popVC.modalPresentationStyle = .popover
let popOverVC = popVC.popoverPresentationController
popOverVC?.delegate = self
popOverVC?.sourceView = self.button
popOverVC?.sourceRect = CGRect(x: self.button.bounds.midX, y: self.button.bounds.minY, width: 0, height: 0)
popVC.preferredContentSize = CGSize(width: 250, height: 250)
self.present(popVC, animated: true)
}
}
// This is we need to make it looks as a popup window on iPhone
extension ViewController: UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
}
Eğer bir popup olarak sunmak istediğiniz bir viewController için popVC tanımlayıcı sağlamak zorunda dikkat içine atın.
Bu yardımcı olur umarım!
Bunun için teşekkürler! İlk örnek işe yarıyor, ancak büyüklüğünü suçluyor gibi görünüyor. Popover sadece tam ekran geliyor. Açıkladığınız ikinci yolun daha iyi bir yol olacağını düşünüyorum .. Ama bir kez daha hata alıyorum IBCocoaTouchoutlet çapa Görünümü ile bağlantı kuramadı. Açıkladığınız ikinci yolla devam edebilecek bir kod verebilir misiniz? – user4671001
@ user4671001 Anlamıyorum, seconde şekilde hiçbir şey için anchoView ayarlamak gerek yok –
popover iphones tam ekran modal olarak gösterir, bu fonksiyonu ekleyerek devre dışı bırakabilirsiniz: 'func adaptivePresentationStyleForPresentationController (PC: UIPresentationController!) - > UIModalPresentationStyle { // Bu *, iPhone dönüşünde görüntülenecek bir popover * } – user1076813