Разные .xib для разных размеров экрана и внешнего вида? - Расширение клавиатуры iOS 8

Моя проблема:
Я пытаюсь разработать пользовательскую клавиатуру для iOS 8. У меня работают кнопки и все такое, но я хотел бы знать, как выполнить различные настройки, будь то iPad или iPhone, и как изменить внешний вид, когда клавиатура должна быть светлой или темной. Могу ли я получить .xib для всего, или есть какая-то хитрость?

Пример:
.xib для клавиатуры iPad, портретной ориентации, светлой
.xib для клавиатуры iPad, альбомной ориентации, светлой
.xib для клавиатуры iPad, портретной ориентации, темной
.xib для клавиатуры iPad, альбомной ориентации, темной
br>.xib для iPhone Keyboard Portrait Light
и так далее и тому подобное...


Я думаю, вы могли бы проверить внешний вид клавиатуры таким образом, а затем соответствующим образом изменить изображения кнопок, но тогда другая клавиатура на iPad, например (другая раскладка), - это моя проблема...

if (self.textDocumentProxy.keyboardAppearance == UIKeyboardAppearanceDark) {

Заранее спасибо.


person ifraaank    schedule 20.09.2014    source источник


Ответы (1)


Вы захотите изменить тему клавиатуры, проверив keyboardAppearance в textDidChange(textInput: UITextInput). Просто переберите все ваши кнопки и примените соответствующие цвета текста/фона.

Я решил использовать один файл .xib для своей клавиатуры. Вы можете оптимизировать для iPad, используя класс размеров Regular w Regular h, но вы не можете оптимизировать для iPhone в альбомной ориентации, потому что в книжной ориентации всегда одинаково (Compact w Compact h). Итак, я настроил свою клавиатуру в viewDidLayoutSubviews для определения высоты и ширины клавиатуры, а затем я использую эти значения вместе с классами размера набора признаков для оптимизации для этих разных размеров и ориентаций экрана. Вы также можете создать много разных xib, я бы не рекомендовал это, если вы можете обойтись одним xib.

person Jordan H    schedule 21.09.2014
comment
Хорошо спасибо. Мне удалось заставить работать функцию темы. Но так как я не знаком с размерными классами, я хотел бы иметь один .xib для iPhone и один для iPad. Вы знаете, как я могу это настроить, чтобы он загружал их правильно? Спасибо еще раз. - person ifraaank; 21.09.2014
comment
В этом случае вам нужно будет условно загрузить соответствующий xib в зависимости от размера устройства. Вы должны быть в состоянии определить в viewDidLoad класс размера (который будет Regular w Regular h только для iPad), а затем загрузить правильный xib. Если viewDidLoad слишком рано, вам нужно будет проверить позже в жизненном цикле, в худшем случае в viewDidAppear. Вы просто запрашиваете self.traitCollection.horizontalSizeClass и verticalSizeClass. - person Jordan H; 21.09.2014