2012-08-30 52 views
0

我發現硬性方式UIBarButtonItem框架寬度爲0.谷歌搜索後,我找到了一種方法來遍歷導航控制器子視圖來查找左側欄按鈕的寬度。它的作品,但它似乎必須有一個更乾淨的方式來做到這一點。計算左邊的UIBarButtonItem寬度

沒有理由我的應用會被拒絕使用這種方法嗎?

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 
      } 
     } 
    } 

回答

1

沒有,也不會有人去拒絕 - 或許,如無人除了蘋果可以說這是肯定的。然而,有一點是肯定的:

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

將無法​​正常工作。使用

[v isKindOfClass:objc_getClass("UINavigationButton")] 

代替。

+1

謝謝。第一個案例確實有效,因爲我發佈的代碼已經過測試,但第二個版本看起來更清晰。 – MobileGuy

+0

@MobileGuy因爲這是正確的做法:) – 2012-09-01 12:40:03