1

logo UIViewアプリの実行時に常に一番上に表示したいのですが、それを行う方法があることはわかっています。UIViewすべてUIViewControllerに同じものを追加しますが、これは最善の方法ではないと思います。たくさんのページがあり、変更する場合はlogo UIView、ページごとに変更する必要があります。

誰かがこれを行うためのより良い方法を持っていましたか?ありがとう。

こんな風に見える:

サンプル画像

4

2 に答える 2

3

アプリごとにウィンドウが1つしかないため、ビューにはレベルがないため、ビューが階層の最上位にあることを確認する必要があります。比較的簡単な方法の1つは、インターフェイスの残りの部分(ナビゲーションコントローラー)の上のウィンドウに直接追加することです。

applicationDidLaunch:

// After the main navigation controller or tab controller has been added
// either programmatically or in the xib:
UIImage *logo = [UIImage imageNamed:@"logo.png"];
UIImageView *logoView = [[UIImageView alloc] initWithImage:logo];
[self.window addSubview:logoView];
于 2012-12-12T15:46:30.867 に答える
2

実際、(a)ロゴを表示して必要なすべての設定を含むUIViewのサブクラスを作成し、(b)このサブクラスを各View Controllerに追加することが、これを行うための最もクリーンで管理しやすい方法だと思います。

ウィンドウにビューを追加するよりもこの方法を好む理由は、ロゴを表示したくないビューがある場合、ウィンドウに追加したものを表示および非表示にする必要がないためです。また、ウィンドウに直接追加すると、実行している内容によっては、私の経験では特定のiOSデバイスで回転の問題が発生する可能性があります。

また、ロゴビューが常にビュー階層の最上位にあることを確認するには、次の2つのことを実行できます。

  1. ビューがすでに存在する場合は、を使用してビューを前面に表示できます[UIView bringSubviewToFront:]

    [myParentView bringSubviewToFront:myLogoSubview];
    
  2. ビューを作成している場合は、で追加すると一番上になります[UIView addSubview:]

    // Set up myLogoSubview first here with alloc+init, etc.
    [myParentView addSubview:myLogoSubview];`
    

あなたの画像では、あなたが上に保ちたいと思っているビューに置き換えられるように見えますmyParentViewが、これはあなたの画像に基づく私の仮定にすぎません。self.viewmyLogoSubview

于 2012-12-12T15:57:36.967 に答える