[iOS/Swift]简单实现跟系统一样的毛玻璃效果的View,可在上面加控件,可移动

http://www.cocoachina.com/ios/20141223/10731.html 这篇文章里有关于更多高斯毛玻璃效果的做法。

利用UIToolbar来实现的一个带有跟系统一样毛玻璃效果的View,可直接在上面增加Label,Button。。。 等控件

为了不跟 Subview混淆使用,所以 addSublayer。(用addSubview可以实现一样的效果,还可以用autoresizingMask 不用重载 layoutSubviews()

代码很少,直接上!  

import UIKit

/**
*  毛玻璃效果的View
*/
class FuzzyView : UIView {
    private let view: UIToolbar!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.backgroundColor = UIColor.clearColor()
        
        self.view = UIToolbar(frame: self.bounds)
        self.view.backgroundColor = UIColor.clearColor()
        self.view.userInteractionEnabled = false
        self.layer.addSublayer(self.view.layer)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        self.view.frame = self.bounds
    }
    
    //MARK:- Touch Event
    // 让其支持拖动
    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {}
    
    override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
        if touches.count >= 1 {
            let touch = touches.anyObject() as UITouch
            let pointPrevious = touch.previousLocationInView(self)
            let point = touch.locationInView(self)
            
            var center = self.center
            center.x += point.x - pointPrevious.x
            center.y += point.y - pointPrevious.y
            self.center = center
        }
    }
    
    override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {}
    
    override func touchesCancelled(touches: NSSet!, withEvent event: UIEvent!) {
        self.touchesEnded(touches, withEvent: event)
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值