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 以外の誰も確実に言うことができないからです。ただし、1 つ確かなことがあります。

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

動作しません。使用する

[v isKindOfClass:objc_getClass("UINavigationButton")]

代わりは。

于 2012-08-30T20:03:03.707 に答える