iOSのcustom keyboardで、画面解像度変更に対応したサイズ変換の実装ができません。
iOS用のcustom keyboardを開発しているのですが、
機種ごとの解像度への自動対応の仕組みで苦慮しています。
viewWillAppear内で
let screenSize = UIScreen.mainScreen().bounds.size
で画面サイズを取得して、
その画面サイズから、キーボードの表示領域と、キーのwidthなどを計算で算出し、
Interface Builderを使わずにキーボードを描画させていますが、
新しいアプリでは大丈夫でも、
少し昔のアプリでキーボードが表示されると、
auto-scalingでサイズ拡大(おそらく約1.17倍)されてしまうことがあり、
以下の画像のように、キーボードの右側が画面から溢れて、表示されないキーが生じてしまいます。
厄介なのは自動拡大された場合でも、上記screenSizeのwidthを取得すると、例えばiPhone6のサイズに合わせて375という値を返してきて、もともとの画面幅の320を返してくれないことです。
(320を返してくれれば、簡単に計算し直せるのですが。)
そこで質問ですが、
auto-scalingする前の実際の画像解像度を取得する方法はありますでしょうか。
viewDidLoad内でやってもダメでした。
もしくは、他に良い解決方法がありますでしょうか。
例えば、constraintsをほぼ使っていないので、それを使えば解決できるでしょうか。
(現状、ほぼ全てプログラム的に表示させており、constraintsを使っていません)
初歩的な質問かもしれず恐縮ですが、
お分かりの方がおられれば、ご教授いただけると幸いです。
大まかな実装は、以下のような感じのコードです。
//画面サイズ取得
myAppFrameSize = UIScreen.mainScreen().bounds
print(myAppFrameSize!.width)
screenWidth = myAppFrameSize!.width
screenHeight = myAppFrameSize!.height
isPortlait = screenWidth > screenHeight ? false : true //画面方向の確認
isIPad = screenWidth > 900 ? true:false
if(isIPad){
keyWidth = 100
}else if(screenWidth < 900 && screenWidth > 370){
keyWidth = 55
}else{
keyWidth = 48
}