有沒有辦法以編程方式獲取UIBarButtonSystemItem的寬度。對於系統項目,width屬性始終返回0。特別是,我想獲得UIViewController的editButtonItem屬性的確切寬度。獲取UIBarButtonSystemItem的寬度
在iPhone上,它的價值是44,但它在iPad上有點大,我無法確定它的價值。
有沒有辦法以編程方式獲取UIBarButtonSystemItem的寬度。對於系統項目,width屬性始終返回0。特別是,我想獲得UIViewController的editButtonItem屬性的確切寬度。獲取UIBarButtonSystemItem的寬度
在iPhone上,它的價值是44,但它在iPad上有點大,我無法確定它的價值。
我從@ JoBu1324留下的評論中得到了我的答案。
這是我使用的代碼。
UIBarButtonItem *item = /*...*/;
UIView *view = [item valueForKey:@"view"];
CGFloat width = view? [view frame].size.width : (CGFloat)0.0;
顯然UIBarButtonItem沒有框架屬性。作爲的UIBarButtonItem是NSObject的(這反過來又沒有框架),它不可能得到的UIBarButtonItem從代碼框架(記錄的API的)直接子類。
你必須依靠一些其他的方式來發現的寬度,如您發現有44是editButtonItem寬度iPhone ;-)
它必須有某種框架,不管它是否被稱爲框架;它只是無法通過公共API訪問 – JoBu1324
是的JoBu1324,我已經提到過它。 – EmptyStack
的的UIBarButtonItem有一個屬性width
,但它通常是0系統按鈕。所以,我通常使用我的自定義按鈕和按鈕內的本地化字符串,或者使用flexibleSpace UIBarbuttonItem在左右按鈕之間添加一個靈活的空間。您可以通過NSString的方法-sizeWithFont
來計算字符串的寬度。靈活的空間可以通過UIBarButtonItem的風格UIBarButtonSystemItemFlexibleSpace
獲得。
這裏有幾個可能性,但它是我的猜測,這適用於任何的答案可能會依賴於一個未公開的API:http://stackoverflow.com/questions/5066847/get-the-width-of-a -uibarbuttonitem(注意:我沒有測試任何這個代碼) – JoBu1324