29

iOS アプリの共有拡張機能を構築していますが、デフォルトSLComposeServiceViewControllerを使用できないため、(ストーリーボードで) 基本的なものを作成UIViewControllerし、ナビゲーション コントローラーに埋め込みました。私はそれを提示したり、却下したりできますが、常にフルスクリーンです。ダイアログのように見せたいと思います。self.preferredContentSizeView Controller で使用してみUse Preferred Explicit Sizeましたが、Interface Builder で Navigation Controller を使用してみましたが、機能しません。

4

2 に答える 2

18

これは、ストーリーボードを使用して簡単かつ直接行うことができますが、すぐにはわかりません。複数のView Controllerは必要ありません。

  1. UIViewController から継承する独自のビュー コントローラー クラスを作成します。
  2. MainInterface.storyboard で、View Controller のクラスを新しいクラスに変更します。
  3. ストーリーボードでは、UI を簡単に描画できますが、ここにトリックがあります。ストーリーボード ビューが画面いっぱいに表示され、デフォルトでビューがクリアな背景で既に作成されていることを理解する必要があります。メイン ビュー内にビューを作成するだけです。自動レイアウト制約を設定して、このビューのサイズと位置を設定できます (水平方向と垂直方向の中央揃えなど)。サイズ クラスを使用して、この内部ビューをコンパクト レイアウトの画面いっぱいに表示することもできます。コントロールをドラッグして、通常の方法で内部ビューからコントロールをView Controllerに接続します

サンプルストーリーボード

  1. カスタム ビュー コントローラーでは、self.extensionContext を参照して、共有アクションを読み取って完了することができます。テンプレートShareViewExtensionのコードを参照してください
于 2016-05-22T09:34:46.470 に答える
12

わかりました、これを理解するのに長い時間を費やしました。何らかの理由で、アクション拡張機能のようにビュー サイズを設定することはできません。常に全画面表示になります (iPad でも)。これを回避する方法は、複数のView Controllerを作成することです。最初のView Controllerを非表示にして、ユーザーがフルスクリーンView Controllerが存在することに気付かないようにします(そして、共有拡張機能では、最初の非表示のView Controllerは実際には完全に非表示になるため、ユーザーはそれが表示されたことさえ知りません) . 次に、非表示のView Controllerを使用して実際のView Controllerを表示します。このようにして、好きなように表示したり、サイズなどを設定したりできます。

私の場合、実際に非表示のビュー コントローラーに UIEffectView を持たせたので、バックグラウンドで素敵なぼかしアニメーションを作成し、その上に実際のビュー コントローラーを表示できます。

ここに写真があります: ここに画像の説明を入力

于 2015-01-29T20:15:40.183 に答える