2012-04-23 18 views
3

私はビュー上に多くのUILabelsを持つ複数のビューを持っています。 (すべてInterface Builderで構築されています)。CGAffineTransformMakeScaleの後のぼやけたテキストの訂正

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

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

をして、私はまた、ビューのフレームを調整します

はこれを行うには私が適用されます。

変換後、すべてのUILabelsのテキストが「ぼやけて」表示されるという問題があります。それはフルスケール表示であるので完全なピクセルを維持しません。

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

答えて

8

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

新しい倍率で文字や画像を鮮明にしたい場合は、手動でサイズを変更して、トランスフォームを適用する代わりに再描画する必要があります。私は、UIScrollViewでホストされているUIViewをthis answerにしてこの方法を説明しました。

1つのメインビューのビュー階層を横断し、各サブビューのフレームを再帰的に読み取り、スケールダウンして内容の再描画を強制する単一のメソッドを作成することができます。トランスフォームは、インタラクティブな操作やアニメーションにはまだ優れていますが、操作やアニメーションの最後に完全な手動スケーリングと再描画をトリガーできます。

+0

これが当てはまると思いました。 –

関連する問題