UibarbuttonItem在ios11中不起作用



长篇小说左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  
}  

最新更新