长篇小说左ios10左,右按钮,自定义标签无问题,ios11都没有显示。我在其他地方读到,我需要为按钮添加约束,但这无济于事。viewDidLoad()
中调用的代码。
self.connectionButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0,0.0,74.0,29.0)];
[self.connectionButton.widthAnchor constraintEqualToConstant:74].active = YES;
[self.connectionButton.heightAnchor constraintEqualToConstant:29].active = YES;
self.connectionButton.backgroundColor = [UIColor yellowColor];
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:self.connectionButton];
self.navigationItem.rightBarButtonItem = buttonItem;
外观:
[[UINavigationBar appearance] setTranslucent:YES];
[[UINavigationBar appearance] setShadowImage:[UIImage new]];
[[UINavigationBar appearance] setBackgroundImage:[UIImage new] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundColor:[UIColor clearColor]];
当我在运行时间检查框架时,这是正确的(0,0,74,29)。
在酒吧中没有显示按钮。xcode 9 beta 8,不在设备或模拟器上工作。
随着更多的测试,我发现导航栏没有显示任何内容,甚至没有默认外观中的标题。几个小时后,浪费了评论/无关的无关代码件,我发现了罪魁祸首:
override var traitCollection: UITraitCollection {
var horizTraitCollection = UITraitCollection(horizontalSizeClass: .regular)
if view.bounds.width < view.bounds.height {
horizTraitCollection = UITraitCollection(horizontalSizeClass: .compact)
}
return UITraitCollection(traitsFrom: [horizTraitCollection, UITraitCollection(verticalSizeClass: super.traitCollection.verticalSizeClass)])
}
这是我使用的覆盖尺寸类用于肖像/景观呈现的内容。IMO与导航栏的外观完全无关。不知道为什么要打破导航栏或如何修复。
编辑:经过一些调整后,我能够在iPad上使用它,而不是iPhone。经过一番调整后,我也可以在iPhone上使用:
override var traitCollection: UITraitCollection {
if UIDevice.current.userInterfaceIdiom == .pad {
var horizTraitCollection = UITraitCollection(horizontalSizeClass: .regular)
if UIDevice.current.orientation.isPortrait {
horizTraitCollection = UITraitCollection(horizontalSizeClass: .compact)
}
return UITraitCollection(traitsFrom: [horizTraitCollection, UITraitCollection(verticalSizeClass: super.traitCollection.verticalSizeClass)])
}
return super.traitCollection
}