Как я могу получить ширину кнопки возврата в UINavigationBar? - PullRequest
1 голос
/ 20 сентября 2011

У нас есть контроллер, который можно нажать из нескольких мест, поэтому его кнопка возврата может иметь один из нескольких заголовков. У этого также есть кнопка, которая выскакивает другой контроллер. Они оба имеют одинаковый пользовательский элемент title, но по-разному центрируются, потому что второй контроллер не имеет кнопки возврата. Я хотел бы добавить проставку, чтобы исправить это, но я не знаю, какую ширину сделать это. Как я могу получить ширину кнопки возврата в UINavigationBar?

Ответы [ 2 ]

5 голосов
/ 20 сентября 2011

Вы всегда можете пролистать подвиды панели навигации, отыскивая вид кнопки «Назад» и выбирая размер, когда найдете его. Некоторое время назад я написал в блоге итерации по подпредставлениям UIView, вот URL:

http://www.dosomethinghere.com/2011/07/09/logging-the-view-hierarchy/

Я использую класс InspectView, описанный в приведенном выше URL-адресе, в моем текущем приложении, и когда я вставил этот код в контроллер представления, имеющий кнопку возврата на панели навигации:

- (void)viewDidAppear:(BOOL)animated
{
    [InspectView dumpViewToLog:self.navigationController.navigationBar findParent:NO];
}

Это результирующий вывод в консоли:

2011-09-20 09:11:19.599 MyApp[2070:207] 
Inspect view hierarchy -----------------------------------
UINavigationBar (0x6626460): frame origin: (0, 20) size: (320, 44) [tag=0] UIView : UIResponder : NSObject : 
.   UILabel (0x6613f00): frame origin: (62, 0) size: (200, 44) [tag=0] UIView : UIResponder : NSObject : 
.   .   UILabel (0x6628520): frame origin: (0, 19) size: (200, 20) [tag=0] UIView : UIResponder : NSObject : 
.   .   UILabel (0x665eda0): frame origin: (0, -1) size: (200, 24) [tag=0] UIView : UIResponder : NSObject : 
.   UINavigationItemButtonView (0x662a5b0): frame origin: (5, 7) size: (49, 30) [tag=0] UINavigationItemView : UIView : UIResponder : NSObject : 
End of view hierarchy -----------------------------------

UINavigationItemButtonView - это кнопка «назад», и вы можете видеть, что ее размер составляет 49 в ширину и 30 в высоту. Вы бы искали этот класс представления в своем приложении и помните размер.

Имейте в виду, что помещение этого кода в viewDidLoad или viewWillAppear будет показывать разные результаты.

0 голосов
/ 20 сентября 2011

попробуйте так

  NSLog(@"frame =%f",self.navigationController.navigationItem.rightBarButtonItem.width);
...