2016-12-16 131 views
0

我以編程方式創建了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

回答

1

您可以使用默認的方法來突出一個按鈕:

[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

您的自定義動畫工作,但它作爲解決方法,我想知道爲什麼默認動畫禁用。 –

1

是的,你可以使用

_payBtn.showsTouchWhenHighlighted = YES; 
+0

其未解決的問題。 –

2

試試這個:

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