【问题标题】:Setting a background image on a tab bar在标签栏上设置背景图像
【发布时间】:2012-01-18 15:45:40
【问题描述】:

我有以下代码在我的标签栏背景中放置了一个漂亮的图像,但它停止工作。有没有人对我能做什么有任何其他建议。我尝试了其他一些选项,如下所示:Setting a background image for a tabbar

-(void)viewDidLoad 
{
    CGRect frame = CGRectMake(0, 0, 480, 49);
    UIView *v = [[UIView alloc] initWithFrame:frame];
    UIImage *i = [UIImage imageNamed:@"smallMenuBackground.png"];
    UIColor *c = [[UIColor alloc] initWithPatternImage:i];
    v.backgroundColor = c;
    [c release];
    [mainTabBar insertSubview:v atIndex:0]; 
    [v release];
    [super viewDidLoad];
}

任何帮助表示赞赏。

2012 年 1 月 23 日更新

好的,我已经取得了一些进展。自从我升级到 Xcode 4.2 和 IOS5 后,这才停止工作。我设法使用 Interface Builder 中的选项将其取回,但现在它仅适用于 IOS5。理想情况下,我希望以编程方式开始工作,但我现在会满足于 IB 解决方案。

我似乎无法让它适用于任何以前的版本。

注意:我的 TabBar 仅在我的 rootviewcontroller 上,没有其他屏幕。

问候,斯蒂芬

【问题讨论】:

  • 在图像颜色设置之前添加行 self.view.backgroundColor = [UIColor clearColor];
  • 阿米特,这会清除主视图的背景颜色。它是我感兴趣的标签栏。
  • 我相信 Apple 可能已经改变了 iOS 5.0.1 中标签栏的内部视图布局(或者故意破坏了这个技巧),因为其他一些人一直在报告同样的问题。答案是切换到使用官方外观 API 函数(见下面我的回答)。

标签: iphone ios uitabbar


【解决方案1】:

由于新的外观 API,您不再需要在 iOS5 中使用子视图技巧来设置标签栏的样式。您可以在 iOS 5 中直接在标签栏上设置 backgroundImage 和 tintColor 等属性,因此只需执行以下操作来检测该方法是否可用:

if ([mainTabBar respondsToSelector:@selector(setBackgroundImage:)])
{
    mainTabBar.backgroundImage = someImage;
}
else
{
    //use the old iOS4 subview hack
}

【讨论】:

  • 尼克,我收到一个错误:在“UITabBar *”类型的对象上找不到属性“backgroundImage”。
  • 您是针对 iOS5 SDK 构建的吗?检查目标构建设置中的基础 SDK 是否为 iOS 5.0。 (如果您的部署目标是 4.x 就可以了)。
  • 尼克,我的建筑设置是正确的。不幸的是,我无法让它工作。
  • 根据文档,UITabBar 有一个名为 backgroundImage 的属性,它是在 iOS5 中添加的,所以如果你正在为 iOS5 构建,那么会发生一些非常奇怪的事情:developer.apple.com/library/IOs/#documentation/UIKit/Reference/…
  • 尝试用 [maintabBar setBackgroundImage: someImage] 代替它。您可能会收到警告,但至少它会编译并运行。我仍然认为最可能的解释是您没有将构建目标设置为 iOS5,但如果没有看到您的项目,我无法真正证明这一点!
猜你喜欢
  • 2012-02-13
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多