2

我想要一个UITabBarController,它的 alpha 为 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

我的问题的解决方案可能只是这个..

在我的 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 回答
0

Here's what worked for me:

  1. Make TabBar transparent (either by Storyboard or programmatically) by setting the Tint- and Background to Clear Color and Opaque to No.

  2. The black background color is actually the window's colour. Assign the image you want to use as the background to the window itself:

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

于 2013-06-26T19:42:27.380 回答