Получение ширины UIBarButtonSystemItem - PullRequest
1 голос
/ 13 июля 2011

Есть ли способ программно получить ширину UIBarButtonSystemItem. Свойство width всегда возвращает 0 для системных элементов. В частности, я хочу получить точную ширину свойства editButtonItem для UIViewController.

На iPhone значение равно 44, но на iPad оно немного больше, и я не могу его зафиксировать.

Ответы [ 3 ]

1 голос
/ 13 июля 2011

Я получил ответ по ссылке, которую @ JoBu1324 оставил после комментария.

Вот код, который я использовал.

UIBarButtonItem *item = /*...*/;
UIView *view = [item valueForKey:@"view"]; 
CGFloat width = view? [view frame].size.width : (CGFloat)0.0;
0 голосов
/ 13 июля 2011

UIBarButtonItem имеет свойство width, но обычно оно равно 0 для системных кнопок.Поэтому я обычно использую свою пользовательскую кнопку с локализованной строкой внутри кнопки или использую FlexibleSpace UIBarbuttonItem, чтобы добавить гибкое пространство между левой и правой кнопками.Вы можете рассчитать ширину строки по методу -sizeWithFont из NSString.Гибкое пространство можно получить с помощью стиля UIBarButtonSystemItemFlexibleSpace UIBarButtonItem.

0 голосов
/ 13 июля 2011

Очевидно, UIBarButtonItem не имеет свойства frame . Поскольку UIBarButtonItem является прямым подклассом NSObject (который в свою очередь не имеет frame ), невозможно получить кадр UIBarButtonItem из кода (документированные API).

Вы должны полагаться на некоторые другие способы определения ширины, так как вы обнаружили, что 44 - это ширина editButtonItem в iPhone; -)

...