可拖动的button

作者: 胜哥的二哥 | 来源:发表于2017-02-07 09:27 被阅读11次

    根据拖动手势的实时位置实现可拖动的button
    代码如下:

    /// 可以随意拖动位置的按钮组件
    
    classSGMoveButton: UIButton
    
    {
    
    // MARK: - properties
    
    varparentView:UIView?;
    
    // MARK: - life cycle
    
    override init(frame:CGRect)
    
    {
    
    super.init(frame:frame);
    
    letrecognizer:UIPanGestureRecognizer = UIPanGestureRecognizer(target:self,action: #selector(SGMoveButton.eventPanGestureRecognizerHandler(_:)));
    
    self.addGestureRecognizer(recognizer);
    
    }
    
    required init?(coderaDecoder:NSCoder)
    
    {
    
    super.init(coder:aDecoder);
    
    }
    
    deinit
    
    {
    
    }
    
    // MARK: - public methods
    
    // MARK: - event response
    
    internal func eventPanGestureRecognizerHandler(_sender:UIPanGestureRecognizer)
    
    {
    
    if(sender.state== UIGestureRecognizerState.changed)
    
    {
    
    letcurrentPoint:CGPoint = sender.translation(in:self.parentView);// 获得pan手势相对于parentView移动的CGPoint
    
    self.center= CGPoint(x:self.center.x+ currentPoint.x,y:self.center.y+ currentPoint.y);// 按照上面相对移动的CGPoint改变button的CGPoint
    
    sender.setTranslation(CGPoint.zero,in:self.parentView);// 将pan手势相对于parentView的CGPoint置零
    
    }
    
    }
    
    }
    

    demo地址:https://github.com/songhaisheng/SGMoveButton

    相关文章

      网友评论

        本文标题:可拖动的button

        本文链接:https://www.haomeiwen.com/subject/ailpittx.html