2016-12-09 3 views
0

iOS 10のメッセージ拡張機能のステッカーを動的に読み込もうとしています。これらのアイコンは正常に読み込まれました。しかし、彼らは適切にメッセージアプリの割合に制約されません。MSStickerBrowserViewステッカーがフレーム外に出る

メッセージエクステンションのコンパクトなビューには、フッターがあります。これはここに見ることができます: enter image description here

メッセージ拡張の拡大表示では、ヘッダーがあります。 enter image description here

これらのステッカーは、MSStickerBrowserViewを使用してMSStickerBrowserViewのサブビューを介してロードしています。私はnumberOfStickersとstickerBrowserViewのスーパークラスメソッドをオーバーライドしてイメージをロードします。

私が知ることから、MSStickerBrowserViewはUICollectionViewの単なるラッパーです。

ステッカーがロードされた後も、ヘッダーとフッターには制約がありません。私は以下の何を意味するかのGIF画像を添付しました:あなたが見ることができるように

enter image description here

は、コンパクトビューでステッカーの最後の行はフッターの下に行きます。したがって、拡大表示では、一番上の行のステッカーがヘッダーの下に移動します。

実験として同じ動的ステッカーシステムを実装しましたが、実際のUICollectionViewControllerとUICollectionView(MSStickerBrowserラッパーの代わりに)を使用して同じ効果が達成されました。さらに、カスタムレイアウトを作成しようとしましたが、同じ結果が得られました。

MSStickerBrowserViewは、すでにこの目的のために作成されたものです。しかし、UICollectionViewがもっとうまくフィットしていれば、私は変更するつもりです。

MSStickerBrowserViewControllerとViewを使用すると、UICollectionViewがプログラムで作成されているように見えるので、ストーリーボードの制約は利用できず、ビューのセルにプログラム制約を適用できませんでした。

私はこれをどのように修正するのか分かりませんし、何か提案が大好きです。

+0

MSStickerBrowserViewはUICollectionViewSubclassではなく、UIViewから継承し、MSStickerBrowserViewControllerはUIViewControllerではなく、UICollectionViewControllerであり、iMessageアプリケーションのさまざまな動作を説明するのに役立ちます。 –

答えて

0

あなたのビューコントローラのオプションの下のチェックを外してみてください:トップバーの下

enter image description here

はそれが仕事を願っています....

+0

答えがありがとう、残念ながら、それはうまくいきませんでした。メッセージアプリのヘッダー/フッターがナビゲーションバー/ステータスバーと見なされていないようです。 – Aaron

+0

Aaronは大丈夫です。iMessageアプリケーション全体は実際には、iMessageフレームワーク専用の大きなView Controllerに組み込まれていることを意味しています。これにより、iMessageの複雑なアプリケーションは、表示領域のサイズを知ることが難しく、自動レイアウトの側面が少なくともiOS 11以前の時点では標準的な方法では機能しないため、構築が難しくなります。 –

0

あなたはストーリーボードを使用して試すことができますレイアウトビューと空のビューをブラウザの下に追加して解決します。

1

私がこれを修正したのは、プレゼンテーション時に設定した現在のプレゼンテーションスタイル(.expandedまたは.compact)を表すために、状態変数を持つUICollectionViewControllerを使用することでした。

はその後、私のUICollectionViewControllerためviewWillAppearで、私は、プレゼンテーションのスタイルに応じて、

if let style = self.presentationStyle, style == .expanded { 
    collectionView?.contentInset = UIEdgeInsets(top: 95, left: cellPadding, bottom: cellPadding, right: cellPadding) 
} 

CELLPADDINGは私collectionViewLayoutでitemSizeを設定した後に計算してきた数であるが、95の値がちょうどあるcollectionViewのcontentInsetを設定しました私はまだiMessageのトップナビゲーションバーを含むサイズをどのように取得するかを知りませんでしたので、推測/クルージング。

関連する問題