0

重複の可能性:
ナビゲーション コントローラーの透明なモーダル ビュー

viewController を透明にしたいのですbackgroundColorが、運がありません..

私は設定/使用しようとしました...

  • self.view.backgroundColor = [UIColor clearColor];- まだ白い背景があります。
  • self.view.alpha = .0f; - 自分の VC にあるものはすべて失われていますが、まだ白い背景が残っています
  • self.view.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:.7f]透明なビューの下にまだ白い背景があります。

EDIT1:

テスト済み:

  • iPad3、iOS 6.0
  • iPad 6.0 シミュレーター
4

5 に答える 5

2

もう少し調査した後、私はこのアプローチを見つけました:

元のコード:

MyViewController *popUpViewController = [[MyViewController alloc] init];
[self presentModalViewController:popUpViewController animated:YES];
[popUpViewController release];

変更されたコード:

TTPopUpViewController *popUpViewController = [[TTPopUpViewController alloc] init];
popUpViewController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:popUpViewController animated:YES];
[popUpViewController release];

modalPresentationStyleご覧のとおり、呼び出しの直前に、表示したくないViewControllerでプロパティを使用していますpresentModalViewController:animated:

注: 私の ViewController ビューのサイズは {680, 700} です

ViewController ビューを次のサイズで表示します{540, 620}。元のサイズが大きいため、境界線と影の一部が非表示になっていますが、ビューのルック アンド フィールを少し変更するだけで問題ありません。

しかし、このアプローチは私が望むものを私に与えるようです。

========

詳細については、次の Apple ドキュメントを参照してください。

UIViewController クラス リファレンス

于 2012-10-11T17:31:01.397 に答える
1

あなたがしていることの問題は、透明なものの下にあるViewControllerのビューが、新しいViewControllerを提示した後に画面から削除されることです。ただし、現在のViewControllerの上に新しいビューを手動で追加し、それを透明に設定しても機能します。

于 2012-10-11T16:14:53.573 に答える
1

通常、presentModalViewController を使用することはできません。回避策を含む同様の質問を次に示します。

ナビゲーション コントローラーの透明なモーダル ビュー

于 2012-10-11T16:11:21.003 に答える
0

そのための回避策を見つけました。UIViewController の 1X1 を作成し、それを親ビュー コントローラーに追加するだけです。そして、その UIViewController にモーダル ビュー コントローラーを表示します。

viewDidLoad で;

self.dummyViewController = [[UIViewController alloc] init];
 [self.dummyViewController.view setFrame:CGRectMake(0, 0, 1, 1)];
 [self.view addSubView:self.dummyViewController.view];

transparentViewController を開く必要がある場合。

[self.dummyViewController presentModalViewController:yourTransparentModalViewController animated:true];
于 2012-10-29T10:38:04.487 に答える
0

これを実現するために presentViewController を使用することはできませんが、あまりエレガントではない方法があります。

.h file
@propert(strong,nonatomic) MyCustomViewController *myCustomVC;

.m file
-(void) presentTransparentViewController
{
if(self.myCustomVC==nil) {
    _myCustomVC = [[MyCustomViewController alloc] init];
    }

self.myCustomVC.view.backgroundColor = [UIColor clearColor];
UIView *view = self.myCustomVC.view;
view.opaque = NO;

view.frame = self.view.frame; //assuming the views are the same size
[self.view addSubview:view];
}

メイン画面フレームの下にビューを追加して、アニメーションで表示することもできます。

于 2012-10-11T16:21:25.413 に答える