我发现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")]
代替。