2

UITabBarControllerは 0.5 のアルファを持ち、その透明度により背景のビューを見ることができるようにしたいと考えています。バックグラウンド ビューは、アクセス可能で変更可能でなければなりません。

この手法を使用して背景を追加できます: https://gist.github.com/1157542

Categoryサブビューを追加し、サブビューをUITabBarController背面に送信する です。ただし、カテゴリなのでサブビューをプロパティにすることはできません。なのでなかなかアクセスできません。

この背景ビューをより柔軟でアクセスしやすくする方法はありますか? たとえば、タブ バー コントローラーのビュー コントローラーから他のサブビューを簡単に追加できますか?

4

3 に答える 3

1

カテゴリの代わりに、subclass UITabBarController. これにより、オブジェクトをより細かく制御できます。サブクラスの例を次に示します。

// MPCustomTabBar.h
@interface MPCustomTabBar : UITabBarController
- (void) setBackgroundImage:(UIImage *)image;
@end

// MPCustomTabBar.m
@interface MPCustomTabBar

- (void) setBackgroundImage:(UIImage *)image  {
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,480)];
imageView.backgroundColor = [UIColor colorWithPatternImage:i];  
[[self view] addSubview:imageView];
[[self view] sendSubviewToBack:imageView];
[[self view] setOpaque:NO];
[[self view] setBackgroundColor:[UIColor clearColor]];
[imageView release];
}

@end

これで、次のようにして、必要なすべてのカスタマイズを行い、新しいサブクラスを割り当てて初期化できます。

MPCustomTabBar *bar = [[MPCustomTabBar alloc] init];
于 2012-06-16T03:41:48.867 に答える
0

これが私のために働いたものです:

  1. Tint- と Background を Clear Color に、Opaque を No に設定して、TabBar を (ストーリーボードまたはプログラムによって) 透明にします。

  2. 黒い背景色は、実際にはウィンドウの色です。背景として使用する画像をウィンドウ自体に割り当てます。

    UIImage *i = [UIImage imageNamed:@"main_background.png"]; UIColor *c = [[UIColor alloc] initWithPatternImage:i]; [self.window setBackgroundColor:c];

于 2013-06-26T19:42:27.380 に答える
0

私の問題の解決策は、単にこれかもしれません..

私のAppDelegateでは、直前に[self.window makeKeyAndVisible];

self.theImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]];
[self.tabBarController.view insertSubview:self.theImage atIndex:0];

その後、次のように、タブ バー コントローラーのビュー コントローラーのいずれかで、この画像を簡単に変更できます。

AppDelegate *appDelegate= (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.theImage.image = [UIImage imageNamed:@"image2.png"];

.. カテゴリは必要ありません。

于 2012-06-16T06:03:36.713 に答える