增加 UIButton 在高亮时的触摸效果半径

Posted

技术标签:

【中文标题】增加 UIButton 在高亮时的触摸效果半径【英文标题】:Increase UIButton's touch effect radius on highlight 【发布时间】:2013-01-23 14:20:28 【问题描述】:

在启用Shows Touch on Highlight 时,有没有办法增加 UIButton 的“发光效果”?在大多数情况下,它在 iPhone 上很好,但在 iPad 上太小了。如果不可能,任何想法如何实现所需的行为?

编辑:

基本上,我正在寻找如何将 UIButton 子类化以添加此功能。

【问题讨论】:

【参考方案1】:

我会使用这样的东西: 为按钮上按下的按钮添加目标。

[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];

这是按下按钮时调用的方法。您可以更改 shadowRadius 以满足您的需要。

- (void) buttonPressed:(id) sender

    UIButton *button = (UIButton *) sender;
    DDLogInfo(@"%@ Button Pressed...", button.titleLabel.text);
    UIColor *color = [UIColor whiteColor];
    button.layer.shadowColor = [color CGColor];
    button.layer.shadowRadius = 20.0f;
    button.layer.shadowOpacity = 0.9;
    button.layer.shadowOffset = CGSizeZero;
    button.layer.masksToBounds = NO;
    button.backgroundColor = [UIColor whiteColor];

【讨论】:

我正在寻找一种模仿完全相同(动画)行为的解决方案,但具有可分配的半径。如果我想同时使用阴影,您的代码也会失败。 我实际上并没有使用“显示触摸突出显示”,而是在我可以调整半径的地方进行自己的突出显示。 从我的解决方案中删除最后一行:button.backgroundColor = [UIColor whiteColor]; 这不是我想要的。同时,我能够找到一个合适的解决方案,由于隐私原因,我无法在此处发布。因此,我接受你的回答,这也足够好了。 @AttilaH 你找到 showtouchonHighlight 的解决方案了吗?【参考方案2】:

您可以创建发光效果的图像,并在按钮突出显示时将其添加到按钮。

【讨论】:

那么,我该如何分配半径呢?动画效果如何?

以上是关于增加 UIButton 在高亮时的触摸效果半径的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 按钮(UIButton)的用法

swift 实践- 04 -- UIButton

iOS - UIButton 显示触摸高亮颜色

如何禁用 UIButton 的高亮控制状态?

UIButton:为选中的高亮 UI 状态设置背景颜色(不是图像)

如何将 UIButton 的高亮属性设置为 NO?