PopoverView Controller preferredContentSize 中的问题
Issues in PopoverView Controller preferredContentSize
我想在 preferredContentSize(W: 250, H: 50) 的中心显示 PopoverViewController,但它显示的是 ViewController 的全尺寸,请找到我做错的地方和更正一下。
class ViewController: UIViewController,
UIPopoverControllerDelegate, UIPopoverPresentationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func PopBtn_Action(_ sender: Any) {
let popController = self.storyboard!.instantiateViewController(withIdentifier: "PincodeViewController") as! PincodeViewController
// set the presentation style
popController.modalPresentationStyle = UIModalPresentationStyle.popover
// set up the popover presentation controller
popController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.up
popController.popoverPresentationController?.delegate = self
popController.popoverPresentationController?.sourceView = sender as? UIView // button
popController.popoverPresentationController?.sourceRect = CGRect(x: self.view.bounds.width/2, y: self.view.bounds.height/2, width: 1, height: 1)
popController.preferredContentSize = CGSize(width: 250, height: 250)
// present the popover
self.present(popController, animated: true, completion: nil)
}
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
func popoverPresentationControllerShouldDismissPopover(popoverPresentationController: UIPopoverPresentationController) -> Bool {
return true
}
func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) {
}
用这个改变你的委托方法
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle
{
return UIModalPresentationStyle.none
}
它对我有用..希望这对你有帮助..
在 swift 3.
中尝试以下代码
func toShowPopOver()
{
let popoverContent = self.storyboard!.instantiateViewController(withIdentifier: "PincodeViewController") as! PincodeViewController
popoverContent.modalPresentationStyle = .popover
if let popover = popoverContent.popoverPresentationController {
popover.sourceView = self.view
popover.permittedArrowDirections = UIPopoverArrowDirection.init(rawValue: 0)
popover.sourceRect = CGRect(x: self.view.bounds.width/2, y: self.view.bounds.height/2, width: 1, height: 1)
popoverContent.preferredContentSize = CGSize(width: 50, height: 100)
popover.delegate = self
}
self.present(popoverContent, animated: true, completion: nil)
}
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.none
}
我想在 preferredContentSize(W: 250, H: 50) 的中心显示 PopoverViewController,但它显示的是 ViewController 的全尺寸,请找到我做错的地方和更正一下。
class ViewController: UIViewController,
UIPopoverControllerDelegate, UIPopoverPresentationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func PopBtn_Action(_ sender: Any) {
let popController = self.storyboard!.instantiateViewController(withIdentifier: "PincodeViewController") as! PincodeViewController
// set the presentation style
popController.modalPresentationStyle = UIModalPresentationStyle.popover
// set up the popover presentation controller
popController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.up
popController.popoverPresentationController?.delegate = self
popController.popoverPresentationController?.sourceView = sender as? UIView // button
popController.popoverPresentationController?.sourceRect = CGRect(x: self.view.bounds.width/2, y: self.view.bounds.height/2, width: 1, height: 1)
popController.preferredContentSize = CGSize(width: 250, height: 250)
// present the popover
self.present(popController, animated: true, completion: nil)
}
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
func popoverPresentationControllerShouldDismissPopover(popoverPresentationController: UIPopoverPresentationController) -> Bool {
return true
}
func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) {
}
用这个改变你的委托方法
func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle
{
return UIModalPresentationStyle.none
}
它对我有用..希望这对你有帮助..
在 swift 3.
中尝试以下代码func toShowPopOver()
{
let popoverContent = self.storyboard!.instantiateViewController(withIdentifier: "PincodeViewController") as! PincodeViewController
popoverContent.modalPresentationStyle = .popover
if let popover = popoverContent.popoverPresentationController {
popover.sourceView = self.view
popover.permittedArrowDirections = UIPopoverArrowDirection.init(rawValue: 0)
popover.sourceRect = CGRect(x: self.view.bounds.width/2, y: self.view.bounds.height/2, width: 1, height: 1)
popoverContent.preferredContentSize = CGSize(width: 50, height: 100)
popover.delegate = self
}
self.present(popoverContent, animated: true, completion: nil)
}
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.none
}