iphone 画面 拡大した後の拡大されたUIImageViewのテキストの再描画




uiviewcontroller 画面 更新 (3)

UIViewControllerビューに添付されたUILabelsにオーバーレイテキストを書き込むことができます。 次に、UIScrollViewから独自のカスタムクラスを作成してオーバーライドする必要があります

- (void)setContentOffset:(CGPoint)anOffset

ここでは、anOffsetとself.zoomScaleを使用して、必要な場所に適切なフォントサイズとすべてのラベルを貼ることができます。 したがって、スクロールビューが移動またはズームするたびに位置を変更します。

私は、次のように沸騰するiOSアプリを持っています:

  • すべてのUIScrollViewDelegateメソッドを実装するビューコントローラ。
  • カスタマイズされたviewForZoomingInScrollViewは、最初のView ControllerでviewForZoomingInScrollViewによってviewForZoomingInScrollViewれたビューです。

カスタマイズされたUIImageViewdrawRectメソッドでは、イメージ上のさまざまな位置にテキストをオーバーレイします。テキストは、イメージ上のポイントによって定義される長方形によって制約されるさまざまなサイズと角度になります。 したがって、座標系はすべてUIImageView関連付けられたイメージに相対的UIImageView

時々、テキストは、デフォルトのズームレベルでテキストを読みやすくするには小さすぎる領域にレンダリングする必要があります。

しかし、ズームインすると、元のUIImageViewで、テキストが与えられた境界に適したフォントサイズでレンダリングされるため、テキストがそれ以上読みやすくなりません。

私が望むのは、ズームインすると、このテキストを適切な位置に、比例的に大きなフォントサイズで再描画する方法です。これは可能なのですか?


私はズーム可能なフロアプランに取り組んできましたが、それをやや単純な方法で処理しました。

私はラベルにテキストを置き、そのラベルをImageViewの上に置きます。 ラベルをUIImageViewで拡大/縮小しながら、スケール内のテキストも拡大します。

ズームインしすぎるとテキストがぼやけてぼやけるので、以下のテキストラベルを更新することができます:

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale

私にとってはこれで十分でしたが、これはあなたにとってもそうかもしれないと思います。


これを修正しようとするのではなく、あなたのデザインがちょっと間違っていると思います。 私はあなたが望む最高のズームで表示しているコンテンツ全体をレンダリングし、ズームパラメータを指定してスクロールビューが完成したコンテンツをズームイン/ズームアウトできるように、これをリエンジニアリングします。 さもなければ、あなたはテキストを修正しようとして狂って行くでしょう。 あなたが望むだけの大きさの画像/文書全体を描画して、その内容をスクロールビューにいくつかの低倍率で追加して、ユーザが望むようにズームイン/ズームアウトできるようにします。 その後、あなたは完了です。





zoom