iPhone XS Maxのホームバーを考慮した画面設計について

解決


のぶ  2020-12-10 17:35:30  No: 149469

FMXフォームにAlignをClientにしてTTabControlを貼り付けていますが、
ホームボタンがないタイプのiPhone(例えばiPhone XS Maxなど)では、
ホームバーが表示される部分にタブボタン(TabItem)が被って表示されてしまいます。

YouTubeのアプリのようにタブボタンの表示位置を底上げしたいのですが、
フォームのPaddingのBottomに固定値※を設定するしかないのでしょうか?
※ネットで調べるとiPhone XS Maxのホームバーの表示部分の高さは34ポイント(論理単位)のようです。

ただ、iPadをベースに画面設計をしており、iPhoneではTScaleLayoutで縮小させているのですが、
ホームバーがあるかどうかの判断をしなくてはいけなくなります。

どなたかよりよい対処方法をご存じの方がおられましたら、
ご回答いただけますと助かります。
よろしくお願いいたします。


KONNOYA  2020-12-11 16:06:28  No: 149481

>フォームのPaddingのBottomに固定値※を設定するしかないのでしょうか?

私も似た様な事を思いついていました。
しかし、単純にPaddingのBottomを設定する様な事をしてしまうと、
物理ホームボタン付きのiPhoneでは下部にスペースが出来てしまう。

そこで、
sysctlbyname( 'hw.machine', nil, @Size, nil, 0 );
で、デバイス名称を取得して( iPhone11,4等 )、
ノッチ付きの機種なら Self.Padding.Bottom を設定すればいい。
と、思ったのですが、新機種に対応できないという問題があります。
お役に立てなくてすみません。

https://delphiworlds.com/2017/11/supporting-iphone-x-display-with-delphi/
↑この様な方法もあるみたいです。


のぶ  2020-12-11 18:26:22  No: 149482

KONNOYAさん
ご回答いただき、大変ありがとうございます。
デバイス名称で判断する方法で進めたいと思います。
sysctlbynameの存在を知りませんでしたので、ありがたかったです。
(RestAPIで判断できるようにしたら新機種にも迅速に対応できますね・・。
ネット接続前提のアプリですので可能ではあるのですが。)
今後、Delphiで簡単に取得できるようになるといいですね。

他の方がご覧になったときのために下記URLを貼っておきます。

■sysctlbynameの使用例
https://qiita.com/kazinoue/items/82b7a4d8e563f8ed3a74

■iOSデバイスのモデル名
https://qiita.com/MYamate_jp/items/9f26ad6f78f347ebd629


※返信する前に利用規約をご確認ください。








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