• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:objective-cで困っています教えてください)

Objective-CでUIImageView上の座標を取得する方法

このQ&Aのポイント
  • UIViewの上に配置したUIImageView上の座標を取得する方法について教えてください。
  • UIImageViewのアスペクト比を維持しながら画像を表示し、画像上のタップした座標を元の画像の座標で取得する方法を教えてください。
  • UIImageView上のタップエリアを設定し、タップした場所の座標を取得する方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> UIImageView(UIImage)上だけをタップのエリアにしたいのですが、画面全体がタップのエリアになってしまいます。 これはUIImageViewのサブクラスを作り、そのサブクラスで userInteractionEnabledをYESにしてtouchesBeganメソッドを 実装すれば、そのView上でタップされたイベントだけ拾うことが できます。ただ、今回はそこまでやらなくても現状の通りViewController でtouchesBeganイベントを拾って、そこでタップされた位置が UIImageViewの範囲内かどうか判定する(範囲外なら何もしない)方が 簡単だと思います。 タップされた位置がUIImageViewの範囲内かどうかはCGRectContainsPoint を使えば簡単にわかります。 (参考) http://d.hatena.ne.jp/tchan0624/20110214/1297652472 > UIImageViewサイズに収まるように表示された画像上の位置から元の画像の座標を取得する方法を教えてください。 もし将来的にUIScrollViewの中にUIImageViewを置いて、その画像を ユーザーが拡大/縮小/スクロールして画像位置を設定できるようにしたい と思っているなら、UIScrollViewの中に元の画像と同じサイズのUIImageViewを 置いて、UIScrollViewでUIImageViewの拡大/縮小/スクロールをするような構造に すれば、前回紹介したconvertXXX系のメソッドで座標変換できます。 そこまでするつもりはなくて、UIImageViewのサイズに収まるよう UIViewContentModeScaleAspectFitで全体表示するだけのつもりなら 自分で計算して座標変換するしかないと思います。 だいたい以下のような感じでやれば、さほど難しくないとは思います。 1.元の画像の縦横サイズとimageViewの縦横サイズを元に縮小率を求める。 2.imageView上のタップ位置を縮小率で割って、元の画像サイズに換算する。 3.元の画像はimageViewの中央に表示されることを考慮して、中央にずらした分 座標位置を調整する。

dkong
質問者

お礼

今回も回答ありがとうございました。convertXXX系のメソッドと1、2、3の手順で座標変換する計算でうまくいきました。またCGRectContainsPoint を使って、特定の部分だけのタッチがとれるようになりました。毎回丁寧な対応に感謝しています。また、よろしくお願いします。

関連するQ&A