iPhone按钮非矩形形状?

iPhone按钮非矩形形状?,第1张

概述如何获得非矩形按钮? 例如,我有一个带alpha透明度的PNG图像. 如何在没有透明色的情况下将按钮的形状设置为此图像. 就像其他人说你应该有一个合理的表面来注册触摸事件,但我相信你知道并且有你的理由所以我只会告诉你我是如何做到的: 我不久前需要这样做,而我所做的就是Sixten Otto刚刚提出的建议.我的原始问题(“更新”部分)中有一些提示,用于在某个点获取图像的alpha值: How to 如何获得非矩形按钮?

例如,我有一个带Alpha透明度的PNG图像.
如何在没有透明色的情况下将按钮的形状设置为此图像.

解决方法 就像其他人说你应该有一个合理的表面来注册触摸事件,但我相信你知道并且有你的理由所以我只会告诉你我是如何做到的:

我不久前需要这样做,而我所做的就是Sixten otto刚刚提出的建议.我的原始问题(“更新”部分)中有一些提示,用于在某个点获取图像的Alpha值:

How to create a transparent window with non-rectangular buttons?

编辑:我建议在下面的例子中继承UIControl,但是如果除了它的“非矩形”之外你的按钮上不需要任何特殊的行为,那么只需用你的PNG创建无边框UIbutton就能完成这项工作并要求减少工作量.通过对UIControl进行子类化并以“艰难的方式”进行 *** 作,您可以更好地控制控件的行为.

我建议你继承UIControl并覆盖触摸事件方法,然后在tapped点下检查Alpha并且如果Alpha == 0则不处理事件.对于绘制你覆盖drawRect:并使用NSImage的drawInRect:fromrec:operation:fraction :在那里绘制控件框架中的图像的方法.

首先,您需要加载图像并获取它的位图表示:

buttonImage = [NSImage imagenamed:@"mybuttonImage"];buttonImageRep = [[buttonImage representations] objectAtIndex:0];

然后你可以将它绘制到控件的视图中:(其中stateImage是指向必须绘制的图像的指针,具体取决于是否按下按钮)

- (voID)drawRect:(NSRect)aRect { [stateImage drawInRect:[self bounds] fromrect:NSMakeRect(0.0,0.0,[buttonImage size].wIDth,[buttonImage size].height)      operation:NSCompositeSourceOver fraction:1.0];}

此时,您已使用png图像绘制了按钮.如果Alpha不为0,您可以覆盖触摸事件方法并处理事件:

NScolor *colorUnderMouse = [buttonImageRep colorAtX:mouse.x y:mouse.y];float Alpha = [colorUnderMouse AlphaComponent];

这就是我所做的,它运作得非常好.希望这可以帮助!

N.B:我的例子是针对Mac的,但它也适用于iPhone,可能稍作修改.

总结

以上是内存溢出为你收集整理的iPhone按钮非矩形形状?全部内容,希望文章能够帮你解决iPhone按钮非矩形形状?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1054215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存