steipete упомянул об этом в комментариях, но я чувствую, что это должен быть ответ сейчас.Начиная с iOS 5, вы можете использовать инициализатор UIBarButtonItem :
- initWithImage:landscapeImagePhone:style:target:action:
Просто установите landscapeImagePhone
изображение на уменьшенную версию изображения, размер которого вы хотите изменить в альбомной ориентации.
После некоторого тестирования я заметил, что iPhone сжимает панель навигации и, следовательно, элементы UIBarButtonItms на панели навигации, но iPhone 6 Plus не .Кажется, что 6 Plus поддерживает навигационную панель на высоте 44 пикселя, тогда как обычный iPhone сжимает ее до 32 пикселей.Из-за этого, 6 Plus также не использует landscapeImagePhone
в альбомной ориентации.
Я проверил это, не просто используя изображение меньшего размера для landscapeImagePhone
, но совершенно другоеобраз.Изображение никогда не менялось на 6 Plus.
Однако, учтите следующее с iOS 9.2 на iPhone 6 Plus:
В документации Apple для этого инициализатора указано, что landscapeImagePhone
:
Изображение, которое будет использоваться для элемента в горизонтальных панелях в идиоме UIUserInterfaceIdiomPhone.
Начиная с iOS 9.2, 6 Plus отображает как UIUserInterfaceIdiomPhone
как в книжной, так и в альбомной ориентации.Раньше 6 Plus был UIUserInterfaceIdiomUnspecified
.Я не совсем уверен, когда это было обновлено.Но, поскольку теперь он равен UIUserInterfaceIdiomPhone
, согласно документации, landscapeImagePhone
должен применяться и к 6 Plus.
Так что, возможно, он не столько полагается на UIUserInterfaceIdiom, сколько наделает на высоте панель навигации.Не знаю точно.Просто отметьте, что это несоответствие может быть «исправлено» в будущем и, следовательно, может вызвать другое поведение.