2016-12-29 50 views
0

我有一个UIButton的子类。现在,我正在使用播放图标的背景图片,以便在方向更改之间正确缩放。当您按下按钮时,播放图标会按预期变暗。当你释放时,它会恢复到原来的颜色。这由iOS默认实现。获取应用于按下UIButton背景图像的颜色

这里是我的习惯UIButton进场的地方。我重写drawRect方法在播放图标周围绘制一个灰色圆圈。我想要发生的是,当用户按下按钮时,我更新颜色属性等于播放图标的变暗颜色,但我不确定如何获取该颜色。

tintColor不是我正在查找的属性,因为默认情况下始终会报告蓝色。如何访问在UIButton处于选定状态时似乎应用的背景图像的色调?

Fwiw,我在Swift 2.3中写这个。

+1

我没有看到任何代码,所以我可能会离开。我有两个想法,我将在两个评论中分开。两者都可能(至少)需要对您的方法进行一些重构。第一个想法是,如果您在UIButton子类中使用图像,那么为什么不找到正确的图像并将它们导入到您的应用程序中? (即使它是一个框架,也可以做到这一点。)找到一个合适的应用程序,按住Ctrl并单击并查看该应用程序的内容。我知道,你可能实际上正在破坏一些知识产权规则。尽管如此,这是我的第一个想法。 – dfd

+2

我的第二个想法。编码比简单的继承UIButton更深一点。所有你到达那里是UIButtonState,这听起来不够。但是UIButton的基类是UIControl。另外,任何视图(UIControl?)的基类都是UIView。在某些时候,您可以推出自己的活动 - 这意味着您可以进入** touchDown **。进入*那层事件,你可以找到你想要的东西。 – dfd

+0

谢谢!我们不只是使用我当前绘制的圆形图标来显示按钮的图像,因为客户提供的图像已经偏离了中心位置,我们需要在灰色圆圈上进行动画处理以完美排列。当我试图将一个圆圈作为图像的一部分时,我绘制的动画将始终是一个像素或两个像素。 **编辑**:即使调整动画的代码中的位置仍然会导致不完美的结果。 – FateNuller

回答

1

对不起,如果我很天真,但为什么不打出数字色彩计应用程序,测量按下按钮的颜色,并在您的代码中使用该RGB值?苹果改变按钮按下的视觉行为并不是很有前途,但我认为你的方法也不是未来的证明。