UIToolbar不显示带有自定义视图的UIBarButtonItem(仅限iOS 11以下)

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

我正在测试一个简单的UIToolbar,两个UIBarButtonItem作为项目,一个使用initWithCustomView:方法构建,另一个使用initWithTitle:style:target:action:方法。

可以在工具栏上查看第二个按钮,但缺少第一个按钮。

问题仅发生在iOS 9和iOS 10上。在iOS 11上不会发生。

有谁有想法吗?

UIToolbar *toolbar = [[UIToolbar alloc] init];
[toolbar setTranslatesAutoresizingMaskIntoConstraints:NO];

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"one" forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:audioOnIcon] forState:UIControlStateNormal];

[toolbar setItems:[NSArray arrayWithObjects:
                   [[UIBarButtonItem alloc] initWithCustomView:button],
                   [[UIBarButtonItem alloc] initWithTitle:@"title" style:UIBarButtonItemStylePlain target:self action:nil],
                   nil]];

[toolbar setBackgroundImage:[UIImage new] forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
[toolbar setShadowImage:[UIImage new] forToolbarPosition:UIBarPositionAny];
toolbar.accessibilityIdentifier = toolbarIdentifier;

[self.view insertSubview:toolbar atIndex:[self getSubviewIndex:toolbar.accessibilityIdentifier]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[subview]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:@{ @"subview": toolbar}]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[subview]-padding-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:@{ @"padding": @(2 * PADDING) } views:@{ @"subview": toolbar }]];

screenshot from iPad 2

ios9 ios10 uibarbuttonitem uitoolbar custom-view
1个回答
6
投票

在将sizeToFit添加到工具栏之前,需要在UIButton上调用[button sizeToFit]; // (Objective-C)方法。

像这样的东西: button.sizeToFit() // (Swift) 要么 qazxswpoi

虽然现在回答这个问题为时已晚,但希望这可以帮助你或其他人。

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