iOS 8共享扩展自定义视图控制器大小

ima*_*145 29 ios8 ios-app-extension ios8-share-extension

我正在为我的iOS应用程序构建共享扩展,我无法使用默认设置SLComposeServiceViewController,所以我创建了(在故事板中)基本的UIViewController并嵌入在导航控制器中.我得出现它,解雇它等但它总是全屏.我想让它看起来更像是一个对话框.我尝试self.preferredContentSize在我的视图控制器上使用,尝试Use Preferred Explicit Size在Interface Builder中的导航控制器,但它不起作用.

Dal*_*ale 18

这可以使用故事板轻松直接完成,但不是很明显.不需要多个视图控制器.

  1. 创建自己的继承自UIViewController的视图控制器类.
  2. 在MainInterface.storyboard中,将视图控制器的类更改为新类
  3. 在故事板中,您可以简单地绘制您的UI - 但这是诀窍.您需要了解故事板视图将填满屏幕,默认情况下,视图已创建为具有清晰背景.您只需在主视图中创建一个视图.您可以设置自动布局约束以调整此视图的大小并对其进行定位(例如,水平和垂直居中).您还可以使用大小类使此内部视图填充紧凑布局上的屏幕.通过控制拖动以通常的方式将控件从内部视图连接到视图控制器

示例故事板

  1. 在自定义视图控制器中,您可以引用self.extensionContext来读取和完成共享操作.请参阅模板ShareViewExtension中的代码


Epi*_*yte 12

好吧,我花了很长时间试图解决这个问题.无论出于何种原因,您都无法使用动作扩展名设置视图大小.它将始终全屏(即使在iPad上).所以解决这个问题的方法是制作多个视图控制器.使第一个视图控制器隐藏,以便用户不会注意到存在全屏视图控制器(是的,在共享扩展中,第一个隐藏视图控制器实际上完全隐藏,因此用户甚至不知道它被呈现) .然后使用隐藏视图控制器显示您的实际视图控制器.这样你就可以按自己喜欢的方式呈现它并设置尺寸等.

在我的情况下,我实际上使我的隐藏视图控制器有一个UIEffectView所以我可以在后台有一个很好的模糊动画,然后呈现我的实际视图控制器.

这是一张图片: 在此输入图像描述