1

1 つの UIVIew には 5 つのアイコン (UIImageView) があります。アイコンを表示/非表示にします。大丈夫です。しかし、2つのアイコンを非表示にすると、残りのアイコンが非表示になっていない(または削除されていない)ビューの中心に表示されます。

すべて表示する場合:

http://sherad.info/elotte.jpg

ビュー2アイコンから削除します(セットの秘伝を試してみましたが、効果は同じです)

[removeFromSuperview を共有]; [sms removeFromSuperview];

この後:

http://sherad.info/utana.jpg

ビューの中央に 3 つのアイコンを表示します。どういうわけかUIView内のアイコンを再配置します。どうすればこれを解決できますか? どうも。

4

2 に答える 2

1

アイコンの後ろの黒い領域は UIView であり、アイコンは静的な位置に追加されていると思いますか? 代わりに、透明な 2 番目の UIView を作成した場合はどうなるでしょうか。表示するアイコンを決定し、それらを 2 番目のビューに追加します。最初のビューとまったく同じサイズの 2 番目のビューから始めますが、表示を減らしたい場合は、2 番目のビューからすべてのアイコンを削除します。

for (yourIcon *icon in [secondView subviews]) {
    [icon removeFromSuperview];
}

2番目のビューのフレームを希望の長さにリセットし、アイコンを再度追加してから、最初のビューの中央に配置します

secondView.center = firstView.center;

そしてどちらか

[secondView setNeedsDisplay]

または、以前に削除した場合は、 firstView のサブビューとして再度追加します (これは必要ではないと思います)。

于 2012-09-28T00:01:30.650 に答える
0

サブビューは、他のアイコンの数に基づいて、相互に相対的に配置する必要があります。アイコンを追加または削除するイベントが発生するたびに、アイコン自体を配置するレイアウト コードを呼び出す必要があります。

ビューを削除すると、スーパービューが追加されたサブビューをカウントし、画面幅をカウントで割った値に基づいて新しい x 座標を作成し、すべてのサブビューのフレームを設定する必要があります。

おそらく自動レイアウトでこれを行う方法がありますが、私はそれらの方法に慣れていません。

于 2012-09-27T21:58:51.077 に答える