web-dev-qa-db-ja.com

UIViewとそのすべての子をスケーリングする

約50個のUIButtonを持つUIViewがあります。すべてのボタンの位置は、メインUIViewの左上隅を基準にしてピクセル単位で指定されました。

ビューで使用されるすべての(背景)画像は、より高い解像度で利用できます。 iPhoneからiPadにアプリを移植する際、UIViewの有効ピクセルサイズを増やしたいと思います。

現在、UIView全体を2倍にアップスケールする方法を探しています。内部の要素の位置を破壊することなくそれは可能ですか?

参考までに、UIViewはXCodeのNIBファイルで設計されています。しかし、プログラムで実行できるかどうかは気にしません。

51
andreas

使用してしまいました

self.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2, 2);

Interface Builderで作成したデザインを維持することができました。

残念ながら、その場合、画像の鮮明さが損なわれますが、これはデザイン全体をプログラムでスクリプト化するのに比べて、わずかな代償です。

116
andreas

Swift 3.0の更新

self.view.transform = CGAffineTransform(scaleX: 2.0, y: 2.0)
11
sahiljain

Swift 4.0、ズーム2x:

myView.transform = CGAffineTransform.identity.scaledBy(x: 2, y: 2)
4
huync

たとえば、CGRectMakeメソッドを使用してボタンを作成し、幅と高さをXおよびYに指定し、iPadが検出された場合はOriginについてもそれぞれ変更する必要がある場合、2を乗算することで、ボタンを作成します。互いに近すぎるとオーバーラップが発生する

編集:それはすべてあなたのロジックに依存します、私も不確かです

2
Danny Lin