我有一个自定义单元格,里面有几个UIButtons。我在按钮上创建了目标操作:
[cell.customLocationButton addTarget:self action:@selector(customLocationButtonTap:) forControlEvents:UIControlEventTouchUpInside];
虽然我没有在UIButtons上看到默认的iOS淡入淡出动画,但这些动作效果很好?是否有我需要启用的东西 - 我认为在使用IB的UIButton时它们是标准的?
答案 0 :(得分:4)
有同样的问题。我可以通过setTitleColor:forState:
使用按钮更改突出显示的颜色,但它不会像其他系统按钮一样从高亮显示恢复到正常状态。
原来那是因为我的按钮属于UIButtonTypeCustom
类型。将其切换为UIButtonTypeSystem
为我解决了这个问题。请注意我在iOS9上运行它。
以下是假设self
是UIView
或子类的代码段( Swift ):
let button = UIButton(type: .System)
button.setTitle("Title", forState: .Normal)
button.sizeToFit() // Sizes the button frame based on the title.
addSubview(button)
答案 1 :(得分:2)
我一直在网上搜索,最后我发现StackOverFlow上的帖子找到了解决方案here。
对于Swift 4您可以添加此UIButton扩展名,它可以正常工作。
extension UIButton {
override open func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
isHighlighted = true
super.touchesBegan(touches, with: event)
}
override open func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
isHighlighted = false
super.touchesEnded(touches, with: event)
}
override open func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
isHighlighted = false
super.touchesCancelled(touches, with: event)
}
}
答案 2 :(得分:1)
你可以做的另一件事是:
<强>夫特:强>
button.showsTouchWhenHighlighted = true
button.setTitleColor(UIColor.blueColor(), forState: .Normal)
button.setTitleColor(UIColor.lightGrayColor(), forState: .Selected)
答案 3 :(得分:1)
我找到了这个解决方案:
setTitleColor(UIColor.init(white: 1, alpha: 0.3), for: .highlighted)
这真的很简单,而且效果很好。
答案 4 :(得分:0)
在您的XIB内部属性检查器中选择您的按钮,然后在内部按钮类型中,您将获得关注选项,您可以相应地选择和更改您的按钮外观: -
答案 5 :(得分:0)
您可能是这样初始化按钮的:
let button = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: <width>, height: <height>)
尝试这样做:
let button = UIButton.init(type: .system)
button.frame = CGRect.init(x: 0, y: 0, width: <width>, height: <height>)
点击后的“淡入淡出”动画具有系统样式,在点击按钮后,您可以对其进行自定义。