にUIImage
示されている がありUIImageView
ます。UIImageView
また、最初の画像の上に別の画像があります。最初の画像の境界内でのみ 2 番目の画像をドラッグできるようにしたい。私の目標をもう少し明確にするために、この画像を見てください:
.
緑色のピンはドラッグ可能である必要がありますが、ピンを青色 (マップの外側) にドラッグすることはできません。現時点ではピンはドラッグ可能ですが、ピンがマップの外にあるかどうかを確認する方法がわかりません。
編集:ドラッグ可能なピンの UIImageView サブクラスでこのメソッドを使用しました:
- (UIColor *)colorAtPosition:(CGPoint)position {
CGRect sourceRect = CGRectMake(position.x, position.y, 1.f, 1.f);
CGImageRef imageRef = CGImageCreateWithImageInRect([[MapViewController sharedMapViewController]getImage].CGImage, sourceRect);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *buffer = malloc(4);
CGBitmapInfo bitmapInfo = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big;
CGContextRef context = CGBitmapContextCreate(buffer, 1, 1, 8, 4, colorSpace, bitmapInfo);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, CGRectMake(0.f, 0.f, 1.f, 1.f), imageRef);
CGImageRelease(imageRef);
CGContextRelease(context);
CGFloat r = buffer[0] / 255.f;
CGFloat g = buffer[1] / 255.f;
CGFloat b = buffer[2] / 255.f;
CGFloat a = buffer[3] / 255.f;
free(buffer);
return [UIColor colorWithRed:r green:g blue:b alpha:a];
}
MapViewController は、マップの UIIImageView がある Viewcontroller です。そのため、このクラスをシングルトンにして、マップ イメージを取得しました。しかし、色に対して得られる値は完全に配線されています。また、UIが少し変わったので写真を更新しました。