4

ビューに多くの UILabels を持つ複数のビューがあります。(すべて Interface Builder で構築されます)。

次に、画面をつまんだときにビューの「小さい」レプリカを作成しようとしています。

これを行うには、次を適用します。

view.transform = CGAffineTransformMakeScale(.5, .5);

次に、フレームの調整も行います。

問題は、変換後、すべての UILabels のテキストが「ぼやけて」しまうことです。フルスケール ビューであるため、ピクセル パーフェクトではありません。

変換後にラベルのピクセル化を増やす方法はありますか?

4

1 に答える 1

9

UIView または CALayer に変換を適用すると、そのレイヤーまたはビューのラスター化されたビットマップがスケーリングされるだけです。これにより、結果の UI 要素がぼやける可能性があります。これは、それらがその新しいスケールで再レンダリングされないためです。

テキストや画像を新しい倍率で鮮明にしたい場合は、手動でサイズを変更し、変換を適用する代わりに再描画する必要があります。この回答では、UIScrollView でホストされている UIView を使用してこれを行う 1 つの方法について説明しました。

1 つのメイン ビューのビュー階層を横断し、各サブビューのフレームを再帰的に読み取り、それを縮小し、その内容を強制的に再描画する単一のメソッドを作成できる場合があります。変換は、インタラクティブな操作やアニメーションに使用するのに最適ですが、完全な手動スケーリングをトリガーし、操作またはアニメーションの最後に再描画できます。

于 2012-04-23T16:50:20.943 に答える