我发现UIBarButtonItem框架宽度为0的困难方式。在谷歌搜索之后,我找到了一种遍历导航控制器子视图以找到左栏按钮宽度的方法。它可以工作,但似乎必须有一种更清洁的方法来做到这一点。

没有任何理由会因为使用此方法而拒绝我的应用程序,对吗?

    UIView *leftBarButtonView = nil;
    for (UIView* v in self.navigationController.navigationBar.subviews) {
        if ([[v class].description isEqualToString:@"UINavigationButton"])  {
            if (leftBarButtonView==nil) {
                if (v.frame.origin.x > 0.0)
                    leftBarButtonView = v;
            } else if (v.frame.origin.x < leftBarButtonView.frame.origin.x && v.frame.origin.x>0.0) {
                leftBarButtonView = v;  // this view is further right
            }
        }
    }

最佳答案

不,它可能不会被拒绝-可能是因为除了Apple之外没有人可以肯定地说出来。但是,可以肯定的是:

[[v class].description isEqualToString:@"UINavigationButton"]


将无法正常工作。采用

[v isKindOfClass:objc_getClass("UINavigationButton")]


代替。

10-07 18:16