ios - bootstrap - Cómo cambiar el tamaño de un popover
popover jquery (3)
Establezca el tamaño de contenido preferido en el controlador de vista que se presenta, no el popoverPresentationController
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) // func for popover
{
if segue.identifier == "popoverView"
{
let vc = segue.destinationViewController
vc.preferredContentSize = CGSize(width: 200, height: 300)
let controller = vc.popoverPresentationController
controller?.delegate = self
//you could set the following in your storyboard
controller?.sourceView = self.view
controller?.sourceRect = CGRect(x:CGRectGetMidX(self.view.bounds), y: CGRectGetMidY(self.view.bounds),width: 315,height: 230)
controller?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
}
}
Estoy teniendo problemas para cambiar el tamaño de mi presentación popover. Esto es lo que tengo hasta ahora.
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) // func for popover
{
if segue.identifier == "popoverView"
{
let vc = segue.destinationViewController
let controller = vc.popoverPresentationController
if controller != nil
{
controller?.delegate = self
controller?.sourceView = self.view
controller?.sourceRect = CGRect(x:CGRectGetMidX(self.view.bounds), y: CGRectGetMidY(self.view.bounds),width: 315,height: 230)
controller?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
}
}
}
Hasta ahora todo lo que hace es centrar la ventana emergente y eliminar la flecha, lo cual es bueno. pero no cambia el tamaño del contenedor. Cualquier ayuda sería muy apreciada. gracias.
cuando uso preferredContentSize me sale el error "No se puede asignar a la propiedad: ''preferredContentSize'' es inmutable"
Lo arreglé a través del guión gráfico: haga clic en su controlador. Haga clic en el inspector de atributos ViewController> Check Use Preferred Explicit size y los valores de entrada. Comprobar imagen
No estoy usando guiones gráficos. Acabo de presentar un UINavigationController en la ventana emergente:
self.present(popoverNavigationController!, animated: true) {}
La forma de redimensionar el tamaño de la ventana emergente cuando se empuja un nuevo controlador de vista, es simplemente cambiar el preferredContentSize antes de presionarlo. Por ejemplo:
let newViewController = NewViewController()
popoverNavigationController!.preferredContentSize = CGSize(width: 348, height: 400)
popoverNavigationController!.pushViewController(newViewController, animated: true)
El problema es cuando intentamos cambiar el tamaño de la ventana emergente cuando abrimos un controlador de vista.
Si usa viewWillDisappear del controlador de vista actual para cambiar el preferredContentSize de la ventana emergente, la ventana emergente cambiará de tamaño pero después de que se abra el controlador de vista. Eso significa que la animación tiene un retraso.
Debe cambiar el preferredContentSize antes de ejecutar popViewController. Eso significa que tiene que crear un botón Atrás personalizado en la barra de navegación como se explica here . Esta es la implementación actualizada para Swift 4:
self.navigationItem.hidesBackButton = true
let newBackButton = UIBarButtonItem(title: "Back", style: .plain, target: self, action: #selector(CurrentViewController.backButtonTapped(sender:)))
self.navigationItem.leftBarButtonItem = newBackButton
Y ejecute el siguiente código cuando se presione el nuevo botón Atrás:
@objc func backButtonTapped(sender: UIBarButtonItem) {
self.navigationController?.preferredContentSize = CGSize(width: 348, height: 200)
self.navigationController?.popViewController(animated: true)
}
Básicamente, el preferredContentSize se debe cambiar antes de presionar y abrir el controlador de vista.