objective-cで困っています教えてください
下記のようにUIViewの上にUIImageViewを配置し、そこにUIImageをUIViewContentModeScaleAspectFitで表示させています。
表示している画像タップして、座標をとりたいと考えています。
UIImageView(UIImage)上だけをタップのエリアにしたいのですが、画面全体がタップのエリアになってしまいます。また、画像のアスペクト比を維持しUIImageViewサイズに収まるように表示しているので、タップでとれたUIImageView上の座標と、画像上の座標にズレができてしまいます。UIImageViewサイズに収まるように表示された画像上の位置から元の画像の座標を取得する方法を教えてください。
#import "ViewController.h"
@interface ViewController (){
UIImageView *imageView;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
CGRect rect = CGRectMake(0,20, 360, 480);
imageView = [[UIImageView alloc] initWithFrame:rect];
imageView.backgroundColor = [UIColor redColor];
//画像のアスペクト比を維持しUIImageViewサイズに収まるように表示
imageView.contentMode = UIViewContentModeScaleAspectFit;
UIImage *image = [UIImage imageNamed:@"hoge.png"];
[imageView setImage:image];
[self.view addSubview:imageView];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/**
* タッチされたとき
*/
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint p = [[touches anyObject] locationInView:imageView];
float x = p.x; // X座標
float y = p.y; // Y座標
NSLog(@"タップ開始 %f, %f", x, y);
}
@end
お礼
ご回答ありがとうございました。