没有突出效果点击uibutton

没有突出效果点击uibutton

问题描述:

我以编程方式创建了UIButton,它的外观是好的,但是当我点击按钮没有“高亮”效果,当你通常点击按钮。如何添加这个?没有突出效果点击uibutton

_payBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [_payBtn setTitle:@" Оплатить " forState:UIControlStateNormal]; 
    [_payBtn setTitleColor:[UIColor lightGreen] forState:UIControlStateNormal]; 
    [_payBtn setContentMode:UIViewContentModeCenter]; 
    _payBtn.tintColor = [UIColor lightGreen]; 
    [[_payBtn layer] setBorderWidth:1.0f]; 
    [[_payBtn layer] setBorderColor:[UIColor lightGreen].CGColor]; 
    [_payBtn addTarget:self action:@selector(didTapPayBtn) forControlEvents:UIControlEventTouchUpInside]; 
    [self.payContainerView addSubview:_payBtn]; 
+0

请接受我的答案,如果它为你工作。 thx – GeneCode

+0

突出显示效果,如信息按钮或默认蓝色突出显示? – Wolverine

+0

请检查我的答案,让我知道你反馈。 – vaibhav

您可以使用默认的方法来突出一个按钮:

[self.button showsTouchWhenHighlighted]; 

如果你想要某种的触摸效果,如设置背景色fr OM强调正常可以使用CABasicAnimation类与关键backgroundColor为背景外观:

- (IBAction) didTapPayBtn:(UIButton *)sender{ 

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"]; 
    animation.fromValue = (id)[[UIColor lightGrayColor] CGColor]; 
    // animation.toValue = (id)[[UIColor lightGrayColor] CGColor]; // optional 
    animation.duration = 1.0f; // animation duration 
    // animation.autoreverses = YES; // optional 
    // animation.repeatCount = NSIntegerMax; // optional  
    [self.button.layer addAnimation:animation forKey:@"ColorPulse"]; 
} 

如果需要通过更改键的值,显示按钮上的影子,你可以这样做的效果:

// inside viewDidLoad 
self.button.layer.shadowOpacity = 1.0f;' 

// inside didTapPayBtn action 
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"shadowColor"]; 
[self.button.layer addAnimation:animation forKey:@"shadow"]; 
+0

我想知道为什么[self.button showsTouchWhenHighlighted];不行。 –

+0

然后你可以像使用布尔值'_payBtn.showsTouchWhenHighlighted = YES;'设置一样使用它,实际上我将其作为动画问题。 – vaibhav

+0

您的自定义动画工作,但它作为解决方法,我想知道为什么默认动画禁用。 –

是的,你可以使用

_payBtn.showsTouchWhenHighlighted = YES; 
+0

其未解决的问题。 –

试试这个:

[_paybtn setHighlighted:YES]; 
[_paybtn sendActionsForControlEvents:UIControlEventTouchUpInside];