Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> iOSアプリ開発(Swift、Objective-C) -> UIWindowベースの昔のアプリが、最新のxcodeでレイアウト崩れを起こす対策

UIWindowベースの昔のアプリが、最新のxcodeでレイアウト崩れを起こす対策

iOS8.0とか、その頃に作ったiOSアプリが、xcode11とiOS13の環境で、おそろしくレイアウト崩れしたりします・・・orz

レイアウト崩れの原因はそれぞれかも知れませんが、
筆者の場合は、スクリーンのheightと、UIWindowのheightがなぜか大幅に違っていることが原因でした。

以前は、iOS側で、自動的に縦幅の調整をしてくれていたようですが、
自動調整の方法が変わったのでしょうね。

NSLog("%f", [UIScreen mainScreen].bounds.size.height);

の値と、

NSLog("%f", windows.bounds.size.height);

とかの、メインウインドウの縦幅の値が違うのが原因で、
レイアウト崩れしてしまっている場合の対策です。

古いアプリ用なので、Objective-Cで書きますw

[window setFrame: CGRectMake(0, heightPadding, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];


こんな感じで、UIScreen mainScreenのwidth、heightと、
メインウインドウのwidth、heightを、同じにしてあげればOKです。


最初に記事を書いた日:2019/10/25

この記事をシェアする

このエントリーをはてなブックマークに追加

関連記事

Meteoric Streamについて

管理人

Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> iOSアプリ開発(Swift、Objective-C) -> UIWindowベースの昔のアプリが、最新のxcodeでレイアウト崩れを起こす対策