【Swift 2.1】为 UIView 添加点击事件和点击效果

简介:

前言

  UIView 不像 UIButton 加了点击事件就会有点击效果,体验要差不少,这里分别通过自定义和扩展来实现类似 UIButton 的效果。

 

声明 
欢迎转载,但请保留文章原始出处:) 
博客园:http://www.cnblogs.com
农民伯伯: http://over140.cnblogs.com

 

正文

  一、为 UIView 添加点击事件

复制代码
extension UIView {

    func addOnClickListener(target: AnyObject, action: Selector) {
        let gr = UITapGestureRecognizer(target: target, action: action)
        gr.numberOfTapsRequired = 1
        userInteractionEnabled = true
        addGestureRecognizer(gr)
    }

}
复制代码

 

 

  二、为 UIView 添加点击效果

复制代码
class UIViewEffect : UIView {

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        backgroundColor = UIColor.groupTableViewBackgroundColor()
    }

    override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) {
        UIView.animateWithDuration(0.15, animations: { () -> Void in
            self.backgroundColor = UIColor.clearColor()
        })
    }

    override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
        UIView.animateWithDuration(0.15, animations: { () -> Void in
            self.backgroundColor = UIColor.clearColor()
        })
    }
}
复制代码

    这里大家可以换成自己的点击效果,如果是 UIImageView 可以换成点击变更透明度。


转载:http://www.cnblogs.com/over140/p/5144707.html

目录
相关文章
|
Swift
Swift之UIView的扩展
Swift之UIView的扩展
172 0
Swift之UIView的扩展
|
Swift
Swift - 如何让UIView,UILabel和UIImageView之间类型互相转化
Swift - 如何让UIView,UILabel和UIImageView之间类型互相转化
146 0
|
Swift
Swift - UIView,UILabel,UIButton,UIImageView
Swift - UIView,UILabel,UIButton,UIImageView
95 0
|
测试技术 Swift
Swift:UIView+Extension
Swift:UIView+Extension
321 0
swift 为UIView设置投影效果
//视频标题投影 videoBackBtn.layer.shadowOffset = CGSizeMake(3,3) videoBackBtn.
1029 0
|
Swift
swift语言IOS8开发战记14 UIView Animation
       这一话我们来增加一些动画效果,首先在上一话的基础上,我们想把我们的评价部分放到一个单独的view中,如下图中的红框部分 建立一个全局变量transforView,定义为UIV...
879 0
|
5月前
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
171 3