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

问题描述 投票:1回答:1

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

iphone uitoolbar uiappearance
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.