Изменение размера UIBarButtonItem с UIAppearance в ландшафте (UIEdgeInsets)

Я использую UIAppearance как введено в iOS 5, чтобы установить пользовательское фоновое изображение для всех BarButtonItems в моем приложении.

Следующий код - то, что я использую, чтобы установить его для кнопки назад, и он прекрасно работает в портретном режиме. Однако, когда телефон поворачивается в горизонтальное положение, а размер навигационной панели изменяется, кнопка вообще не изменяется и обрезается внизу.

Я думал, что это будет сделано автоматически, так как я установил вставки краев, чтобы не заботиться о вертикальном изменении размера. Есть идеи?

UIImage *colorViewBBIImage = [[UIImage imageNamed:@"backButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 17, 0, 7)]; 

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:colorViewBBIImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

Мое изображение без сетчатки - 30 х 31 пикс.

1 ответ

Решение

Для ландшафтного режима просто вызовите вторую строку вашего кода с последним параметром UIBarMetricsLandscapePhone

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:colorViewBBIImage forState:UIControlStateNormal barMetrics:UIBarMetricsLandscapePhone];
Другие вопросы по тегам