首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为核心图形绘制的UIButton创建选择状态颜色?

如何为核心图形绘制的UIButton创建选择状态颜色?
EN

Stack Overflow用户
提问于 2013-12-24 05:50:40
回答 1查看 207关注 0票数 0

我已经通过CoreGraphics创建了一个菱形形状,用作UIButton。我在设置它的按下状态时遇到了问题,当选择时设置背景颜色会使整个框架着色,而且由于菱形按钮是绘制的,所以没有图像可用于它的选择状态。我怎样才能让它在按下菱形按钮时,只有UIButton视图中的钻石会改变颜色?

EN

回答 1

Stack Overflow用户

发布于 2013-12-24 06:31:09

如果您有一个用于菱形的图像,为什么不创建一个选定的状态图像并使用UIButton setImage: forState:

如果所有的绘图都是你自己完成的,你需要将绘图裁剪到菱形上。ctx是您要绘制到的CGContext。

代码语言:javascript
运行
复制
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef maskCtx = CGBitmapContextCreate(NULL, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedFirst);
CGColorSpaceRelease(colorSpace);

UIBezierPath* path = CreateADiamondBezierPath();

CGContextSetRGBFillColor(maskCtx, 0, 0, 0, 1);
CGContextBeginPath(maskCtx);
CGContextAddPath(maskCtx, path.CGPath);
CGContextFillPath(maskCtx);

CGImageRef maskImg = CGBitmapContextCreateImage(maskCtx);

//Clip to the mask
CGContextClipToMask(ctx, scaledFrame, maskImg);

//Now fil in your ctx with the selected color
CGContextSetRGBFillColor(ctx, 1, 0, 0, 1); //this does red

CFRelease(maskImg);
CFRelease(maskCtx);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20751700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档