我正在开发一个应用程序,我的要求是更改点击按钮的图像。图像基本上是国家的地图。所以,问题是我做了一个自定义按钮,但它检测到图像外的动作同样(因为图像是弯曲的,默认情况下按钮是圆角矩形)。所以我可以根据图像完全自定义按钮。
由于
答案 0 :(得分:0)
如果你的意思是自定义形状的按钮(自定义可点击区域)我写了一些方法来检查,UIImage中的那个点是否透明:
- (BOOL) pointInNontransparentArea:(CGPoint)point {
CGImageRef imageRef = [imageView.image CGImage];
NSData* data = (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(imageRef));
unsigned char *pixels = (unsigned char *)[data bytes];
size_t width = CGImageGetWidth(imageRef);
size_t bitsPerComponent = CGImageGetBitsPerComponent(imageRef);
size_t bitsPerPixel = CGImageGetBitsPerPixel(imageRef);
size_t numberOfComponents = bitsPerPixel / bitsPerComponent;
int pixelNumber = point.y * width + point.x;
int byteNumber = pixelNumber * numberOfComponents + numberOfComponents - 1;
unsigned char transparencyColor = pixels[byteNumber];
[data release];
if(transparencyColor != 0)
return YES;
else
return NO;
}
如果您的按钮图像具有透明背景,则很容易 - 只需在按钮视图中检查触摸位置,然后检查透明区域中的忽略触摸。
您也可以查看Ole Begemann课程: http://oleb.net/blog/2009/10/obshapedbutton-non-rectangular-buttons-on-the-iphone/