web-dev-qa-db-ja.com

変換のみのレイヤーのプロパティcontentGravityを変更しても、効果はありません

非常にシンプルな三目並べゲームの作成を始めました。主な目標は、すべてのiOSデバイスのすべての画面サイズに比例してビューを作成することです。そこで、画像をViewControllerに配置し、画面のフルサイズにしてから、スタックビューに配置します。このスタックビュー0にすべての側面に制約を追加しました。そして、シミュレーターを実行すると、すべてが見栄えがよくなります。しかし、コンソールパネルにメッセージが表示されます。どういう意味ですか?

screenshot

49
Alex Belke

StackViewのMode属性を変更したために発生する可能性があります。

enter image description here

ModeをAspect Fitに設定すると、この警告が表示されます。

120
Lubos Ilcik

UIStackViewでレイヤーが変更されると、この警告が表示されます。警告が指摘しているように、UIStackViewtransform-only layerであり、UIViewとは少し異なります。ドキュメントに従って:

UIStackViewは、UIViewの非レンダリングサブクラスです。つまり、独自のユーザーインターフェイスを提供しません。代わりに、配置されたビューの位置とサイズを管理するだけです。その結果、いくつかのプロパティ(backgroundColorなど)はスタックビューに影響しません。同様に、layerClass、drawRect :、またはdrawLayer:inContext:をオーバーライドすることはできません。

これについての詳細 here

OPの問題の正確な原因を示していないかもしれませんが、UIStackViewの振る舞いが同じではなく、UIViewと混同してはならない理由を明らかにすることが望まれます。

61
victor.vasilica

必要な人のために:StackViewでclipToBoundsをfalseに設定します。

3

あなたがしたことは完全に正しいようです。

ただし、スタックビューなしで側面を簡単に固定できるのに、なぜイメージビューをスタックビューに入れることを選んだのか疑問に思います。私はスタックビューの大ファンですが、どこでも意味がありません。新しいビューを追加すること、およびticktactoeボードのサイズを変更することを計画していない限り、私はそれを使用しない可能性があります。

2
Rob Norback