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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIToolbar外观用于以编程方式添加工具栏相关的知识,希望对你有一定的参考价值。

我有两个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可以正常使用界面构建器文件,但有没有人知道如何让它们以编程方式工作?

答案

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

[[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

以上是关于UIToolbar外观用于以编程方式添加工具栏的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将 UIButton 添加到 UIToolBar?

以编程方式位于底部的 UIToolbar

使用UIToolbar调整UIView的大小不会同时调整大小

以编程方式将 UILabel 添加到工具栏

以编程方式将项目添加到 UIToolbar 不起作用

以编程方式修改 UIToolBar 项