iPhone按钮非矩形形状?
如何获得非矩形按钮?
例如,我有一个带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,可能稍作修改. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |