2011-07-13 58 views
1

有沒有辦法以編程方式獲取UIBarButtonSystemItem的寬度。對於系統項目,width屬性始終返回0。特別是,我想獲得UIViewController的editButtonItem屬性的確切寬度。獲取UIBarButtonSystemItem的寬度

在iPhone上,它的價值是44,但它在iPad上有點大,我無法確定它的價值。

+0

這裏有幾個可能性,但它是我的猜測,這適用於任何的答案可能會依賴於一個未公開的API:http://stackoverflow.com/questions/5066847/get-the-width-of-a -uibarbuttonitem(注意:我沒有測試任何這個代碼) – JoBu1324

回答

1

我從@ JoBu1324留下的評論中得到了我的答案。

這是我使用的代碼。

UIBarButtonItem *item = /*...*/; 
UIView *view = [item valueForKey:@"view"]; 
CGFloat width = view? [view frame].size.width : (CGFloat)0.0; 
0

顯然UIBarButtonItem沒有框架屬性。作爲的UIBarButtonItemNSObject的(這反過來又沒有框架),它不可能得到的UIBarButtonItem從代碼框架(記錄的API的)直接子類。

你必須依靠一些其他的方式來發現的寬度,如您發現有44是editButtonItem寬度iPhone ;-)

+0

它必須有某種框架,不管它是否被稱爲框架;它只是無法通過公共API訪問 – JoBu1324

+0

是的JoBu1324,我已經提到過它。 – EmptyStack

0

的的UIBarButtonItem有一個屬性width,但它通常是0系統按鈕。所以,我通常使用我的自定義按鈕和按鈕內的本地化字符串,或者使用flexibleSpace UIBarbuttonItem在左右按鈕之間添加一個靈活的空間。您可以通過NSString的方法-sizeWithFont來計算字符串的寬度。靈活的空間可以通過UIBarButtonItem的風格UIBarButtonSystemItemFlexibleSpace獲得。