ios8 ios-app-extension ios8-share-extension

ios8 - Tamaño de controlador de vista personalizada de iOS 8 Share Extension



ios-app-extension ios8-share-extension (2)

Esto se puede hacer fácil y directamente usando el guión gráfico, pero no es obvio de inmediato. No hay necesidad de múltiples controladores de vista.

  1. Cree su propia clase de controlador de vista heredada de UIViewController.
  2. En MainInterface.storyboard, cambie la clase del controlador de vista a su nueva clase
  3. En el guión gráfico puedes simplemente dibujar tu interfaz de usuario, pero aquí está el truco. Debe comprender que la vista del guión gráfico llenará la pantalla y, de forma predeterminada, la vista ya se ha creado con un fondo claro. Simplemente necesita crear una vista dentro de la vista principal. Puede establecer restricciones de diseño automático para dimensionar esta vista y posicionarla (por ejemplo, centrada horizontalmente y verticalmente). También puede usar clases de tamaño para hacer que esta vista interna llene la pantalla en diseños compactos. Conecte los controles desde la vista interior a su controlador de vista de la forma habitual mediante el control y arrastre

  1. En su controlador de vista personalizado, puede consultar self.extensionContext para leer y completar la acción de compartir. Consulte el código en la plantilla ShareViewExtension

Estoy creando una extensión compartida para mi aplicación iOS y no puedo usar el SLComposeServiceViewController predeterminado, por lo que creé (en el guión gráfico) un UIViewController básico e UIViewController en un controlador de navegación. Puedo presentarlo, descartarlo, etc. pero siempre está en pantalla completa. Me gustaría que se pareciera más a un diálogo. He intentado usar self.preferredContentSize en mi controlador de vista, probé Use Preferred Explicit Size en el controlador de navegación en Interface Builder, pero no funciona.


Ok pasé mucho tiempo tratando de resolver esto. Por el motivo que sea, no puede establecer el tamaño de vista como puede hacerlo con la extensión de acción. Siempre irá a pantalla completa (incluso en iPad). Así que una forma de evitar esto es hacer múltiples controladores de vista. Haga que el primer controlador de vista esté oculto para que el usuario no note que hay un controlador de vista en pantalla completa. . Luego presente su controlador de vista real utilizando el controlador de vista oculta. De esta manera, puede presentarla como desee y configurar el tamaño, etc.

En mi caso, en realidad hice que mi controlador de vista oculta tuviera un UIEffectView para poder tener una buena animación de desenfoque en segundo plano y luego presentar mi controlador de vista real sobre él.

Aquí hay una foto: