0

画面の残りの部分を暗くしながら、同時に UIView を表示しようとしています。しかし、私は苦労しています。これは私のコードです:

UIWindow *window = [[UIApplication sharedApplication] keyWindow];

self.viewToDarken = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
[self.viewToDarken setBackgroundColor:[UIColor blackColor]];
[self.viewToDarken setAlpha:0.0f];
[window insertSubview:self.viewToDarken aboveSubview:self.hostView];

[self.hostView addSubview:self];


[UIView animateWithDuration:0.25f
                      delay:0.0
                    options:UIViewAnimationCurveLinear
                 animations:^(void) {
                     [self setFrame:[self destinationFrame]];
                     if (self.viewToDarken) self.viewToDarken.alpha = 0.7f;
                 }completion:^(BOOL finished) {
                     [self notifyDidShow];
                 }];

ただし、ビューを暗くして、追加しているビュー (自己) の下に配置することはできません。これが機能しない理由はありますか?

ありがとう!

4

2 に答える 2

0

viewToDarken上記をself.hostView追加してから追加selfするhostViewので、もちろん self は below になりますviewToDarkenviewToDarken以下に追加する必要がありますself.hostView

あなたが今持っているものは次のとおりです。

hostView + self(view) (以下) -> viewToDarken

あなたが必要

viewToDarken (下)-> hostView + self(view)

あなたが持っている必要があります:

[window insertSubview:self.viewToDarken belowSubview:self.hostView];
于 2013-04-05T05:07:51.820 に答える
0

ここには 3 つのビューがあります。selfhostViewおよびviewToDarkenviewToDarken上記を挿入してから、hostViewhostViewに追加しています。は のサブビューであるselfため、下にあるすべてのビューの下になります。selfhostViewhostView

おそらく、代わりに を に追加したいと思うでしょviewToDarkenhostViewhostViewまたは、次のように挿入することもできます。

[self.hostView.superview insertSubview:self.viewToDarken belowSubview:self.hostView];

どちらの方法でも、座標系を考慮する必要があります。必ずチェックしてください-[UIView convertRect:fromView:]

また、フレームに絶対的な「マジック」番号を使用する代わりに、window.bounds を使用します。

self.viewToDarken = [[UIView alloc] initWithFrame:window.bounds];
于 2013-04-05T05:10:51.520 に答える