0

私の目標は、ボタンのビューを作成し、画面のサイズに合わせて拡大して、すべてのデバイスで動作し、画面の幅の 90% を占めるようにすることでした。古いプログラムであるため、制約を使用していません。現在、制約をオンにするのは大変な仕事です。私はこれを回避する方法を「ごまかす」ことを望んでいました。だから、私はこれを試しました:

基本的に標準の「ビュー」アイテムであるフルスクリーンビュー(インターフェイスビルダーで作成)内に作成された小さなビューがあります。その小さなビューの中には、「キーボード」を構成する UIButtons がたくさんあります。

小さいビューをスケーリングし (ボタンも視覚的にスケーリングします)、サイズが変化してもボタンが適切に応答するようにしたいと思います。だから私はこれをしました:

セットアップ: そのビュー内に UIButtons を含むビュー (buttonView)。ビューとボタンは、必要に応じて (Interface Builder で) IBOutlets と IBActions にアタッチされます。次のコードは、画面に合わせてビューをスケーリングします。

_keyboardCard.transform = CGAffineTransformIdentity;   // reset to normal
CGFloat keyboardWidth   =  _keyboardCard.bounds.size.width;
// screenWidth is set earlier and has width bounds value for full screen
CGFloat widthScale = (screenWidth/keyboardWidth)*0.9;   // 90% of full screen width
_keyboardCard.transform = CGAffineTransformScale(CGAffineTransformIdentity, widthScale, widthScale);

これは実際には視覚的には問題なく機能し、予想どおり、「keyboardCard」のサイズが大きくなり、内部のボタンも (視覚的に) 大きくなります。デバイスごとに変更すると、見栄えがよくなります。

ただし、一部のボタンが反応しなくなる場合があります。特に中央付近で問題なく動作し続けるものもあれば、停止するものもあります。タッチ障害はすべてのエッジで始まり、サイズが大きくなるにつれて内側に向かって進みます。ボタンがエッジで機能しないようにする「マスク」があるかのようです。

質問は次のとおりです。これはこれを行うための正当な方法ですか? どこにも文書化されていないようです。そうでない場合、ボタンを使用してビューを拡大および縮小し、ボタンが期待どおりに機能するようにする方法として何を提案しますか?

それとも、「キーボード」の小、中、大のビューを作成し、画面サイズに基づいて最も近いビューを選択する方がよいでしょうか?

提案とコメントをお願いします。ありがとうございました。

4

0 に答える 0