Изменение размера 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];