10

私は画像のグリッドを構築しています。一番上から始めて、あらゆる場所に UIImageView オブジェクトを作成します。少し重なるようにしたいのですが、最後に描いたものが一番上にあります。最初に描画するものが一番上になるように、プログラムで z 位置を設定したいと思います。

4

9 に答える 9

21

insertSubiewを使用する代わりに、次を試す ことができます。

- (void)bringSubviewToFront:(UIView *)view
- (void)sendSubviewToBack:(UIView *)view
于 2010-11-28T22:35:01.597 に答える
3

直接ではありません。

1つの解決策は、UIViewにz-indexプロパティを与えることです。深度レベルを定義する整数。次に、UIViewを含むNSArray(myArray)を調べて、深さの順にサブビューとして追加します。

于 2009-05-05T17:45:11.313 に答える
3

私も同じ問題を抱えていました。最高と最低の z-index を持つサブビュー要素が必要でした。私のテストから、UIKit は z 位置に従って subviews-propy 内の要素を配置することがわかりました。たとえば [self.scrollview subviews] 、最初の配列要素は、一番後ろにあるサブビューです。最大のインデックスを持つ配列要素は、一番前のサブビューです。使用する場合

- (void)bringSubviewToFront:(UIView *)view
- (void)sendSubviewToBack:(UIView *)view`

サブビュー配列はそれに応じて並べ替えられます。

于 2011-05-23T08:57:02.200 に答える
3

下/上のビューへの参照がある場合は、サブビューを追加する必要があります。次を使用できます

[self.view insertSubview:<#(UIView *)#> belowSubview:<#(UIView *)#>];
[self.view insertSubview:<#(UIView *)#> aboveSubview:<#(UIView *)#>];
于 2012-04-02T11:57:29.340 に答える
2

実際、私の知る限り、そのための z-index 位置プロパティはありません。ビューでの描画は、単純な描画モデルを使用します。

UIImageView とは異なり、CALayers には奥行きがある (3D 空間の 2D 投影である) ため、ロジックを描画ループに入れる (つまり、必要なものを最後に描画する) か、Cocoa アニメーションを使用することができます。参考までにこちらをご覧ください。

于 2009-05-05T17:48:58.713 に答える
2
imageView.layer.zPosition = 100;
于 2012-08-14T13:27:56.200 に答える
1

多くの UIImageView オブジェクトの代わりに CALayer を使用することを検討することをお勧めします。UIImageView オブジェクトは優れていますが、激しい描画には CALayer の方が軽量で効率的です (ただし、ユーザーが画像を操作する必要がある場合は、ビュー オブジェクトの方が適しています)。それは本当にあなたが何をしているかに依存します。CALayers には zPosition プロパティがあります。これは、UIKit がビュー スタック内の UIView の位置を調整するときに使用するものです。

于 2011-02-23T07:57:23.830 に答える