UIToolbar外观用于以编程方式添加工具栏

时间:2012-11-05 13:38:16

标签: iphone uitoolbar uiappearance

我有两个UIToolbar个实例,一个添加在屏幕顶部,一个添加在底部。我想使用iOS 5外观协议来设置这些样式。

我可以使用以下方法:

[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"toolbarimage.png"]
                            forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

但是,我无法让UIToolbarPositionTopUIToolbarPositionBottom使用我以编程方式添加的工具栏。我正在创建这样的工具栏:

_topBar = [[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, self.view.frame.size.width, 44)];
_topBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[self.view addSubview: _topBar];

_bottomBar = [[UIToolbar alloc] initWithFrame: CGRectMake(0, self.view.frame.size.height - 44, self.view.frame.size.width, 44)];
    _bottomBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    [self.view addSubview: _bottomBar];

据我了解,UIToolbarPositionTop可以正常使用界面构建器文件,但有没有人知道如何让它们以编程方式工作?

1 个答案:

答案 0 :(得分:4)

这是一个相对简单的修复。而不是使用一般的

[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"toolbarimage.png"]
                        forToolbarPosition:UIToolbarPositionAny
                                barMetrics:UIBarMetricsDefault];

可以将特定工具栏作为目标:

// Setup top tool bar
UIToolbar *topToolbar = [[UIToolbar alloc] init];
[topToolbar setBackgroundImage:[UIImage imageNamed:@"top_toolbar.png"]
               forToolbarPosition:UIToolbarPositionAny
                       barMetrics:UIBarMetricsDefault];

// Setup bottom toolbar
UIToolbar *bottomToolbar = [[UIToolbar alloc] init];
[bottomToolbar setBackgroundImage:[UIImage imageNamed:@"bottom_toolbar.png"]
               forToolbarPosition:UIToolbarPositionAny
                       barMetrics:UIBarMetricsDefault];

我找到了类似的答案,其中详细说明了为什么UIToolbarPositionTop等是系统属性,不应该依赖in this answer