0

我发现 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
            }
        }
    }
4

1 回答 1

1

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

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

不会工作。采用

[v isKindOfClass:objc_getClass("UINavigationButton")]

反而。

于 2012-08-30T20:03:03.707 回答