2

おそらく少し初心者の質問ですが....私はUITabBarControllerを使用するiPhoneアプリを書いています。Interface Builderで、MainWindow.xibにタブバーを設定しました。4つのタブがあり、それぞれが適切なUIViewControllerサブクラスのxibをロードするように設定されています。InterfaceBuilderの各UIViewControllerサブクラスのxibファイルにビューを作成しました。各タブをタップすると、正しいUIViewControllerのビューが表示されるという点で、すべてがうまく機能しています。

しかし、私が本当に望んでいるのは、UIViewControllerサブクラスの1つのビューで、4つのエッジすべてに約30pxの半透明の境界線を設定して、背後のビューのエッジをグレー表示にすることです。IE。最初のタブはメインアプリケーションであり、画面全体(ステータスとタブバーの領域を除く)を占めます。タブ2は保存するためのものであり、メインアプリの上にある小さなモーダルウィンドウのように見せたいと思います。(これをhtml Webアプリとして実行している場合、使用する用語とテクノロジーはjQueryオーバーレイになります)

これは意味がありますか?

presentModalViewControllerで遊んでみましたが、ステータスとタブバーの領域を含む画面全体を占めるという点でさらに悪化しています。

ヘルプやポインタは非常に高く評価されています乾杯

ネイサン

4

1 に答える 1

1

UIViewControllerは、現在表示されていない(メモリを節約するために)その下のビューをアンロードする可能性があるため、その下のビューに対して透過的にすることはできません。

私が使用した最善の解決策は、新しいView Controllerを押す前に現在のビューの写真を撮り、それを背景画像として使用することです(透明度を偽造します)。これを実装した方法は次のとおりです。

NewViewController *newView = [[NewViewController alloc] init];
shareVC.imageBackground = [Utilities getScreenshot:self.view];
[self presentModalViewController:newView animated:YES];
[newView release];  

次に、newViewControllerでこれを行います(viewDidLoad、viewWillAppearなどで):

[imageView setImage:imageBackground];

これがスクリーンショット機能です

+(UIImage *)getScreenshot:(UIView *)_view {
    //take a screenshow of the parent view so we can add it as a background to the modal view
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
        UIGraphicsBeginImageContextWithOptions(_view.window.bounds.size, NO, [UIScreen mainScreen].scale);
    else
        UIGraphicsBeginImageContext(_view.window.bounds.size);
    [_view.window.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

次に、UIImageViewを背景として新しいビューを設定し、そのimageViewに適切なAlpha値を選択して、透明に見えるようにする必要があります。

于 2012-05-06T20:16:11.823 に答える