美文网首页
swift5.x view平移以及拖动四角改变frame

swift5.x view平移以及拖动四角改变frame

作者: Bruce_XHG | 来源:发表于2020-05-28 17:08 被阅读0次

1、view添加pan手势,移动view在屏幕上的位置,根据需求是否要限制屏幕边界还是父视图边界

@objc func panSliding(pan:UIPanGestureRecognizer){
      let point = pan.translation(in: self)
      let width = self.superview!.frame.size.width
      let height = self.superview!.frame.size.height
      var originalFrame = self.frame
    if originalFrame.origin.x >= 0 && (originalFrame.origin.x + originalFrame.size.width) <= width {
        originalFrame.origin.x += point.x
    }
    if originalFrame.origin.y >= 0 && (originalFrame.origin.y+originalFrame.size.height) <= height {
        originalFrame.origin.y += point.y
    }
    self.frame = originalFrame
        pan.setTranslation(CGPoint.zero, in: self)
        if pan.state == .began {
            self.fastBtn.isEnabled = false
        }else if pan.state == .changed {
        
    }else{
            var frame = self.frame;
            //记录是否越界
            var isOver = false
            if frame.origin.x < 0 {
                frame.origin.x = 0
                isOver = true
            }else if frame.origin.x + frame.size.width > width {
                frame.origin.x = width - frame.size.width;
                isOver = true
            }
            if frame.origin.y < 0 {
                frame.origin.y=0
                isOver = true
            }else if frame.origin.y + frame.size.height > height {
                frame.origin.y = height - frame.size.height
                isOver = true
            }
            if(isOver) {
                UIView.animate(withDuration: 0.2) {
                    self.frame = frame
                }
            }
            self.fastBtn.isEnabled = true
    }
}

2、有时候会遇到拖动view的四角改变view的frame,拖动的对角位置不变。我的做法是分别在四角添加了view以及对添加的view添加了pan手势,注意改变frame时的连续性(pan.setTranslation(CGPoint.zero, in: self))也就是这句代码

@objc func rightTopView(pan:UIPanGestureRecognizer){
        
        let point = pan.translation(in: self)
        let superviewMaxX = self.superview!.frame.size.width
//      let superviewMaxY = self.superview!.frame.size.height
        debugPrint(point)
        var originalFrame = self.frame
        if originalFrame.origin.y <= 0 {
            originalFrame.origin.y = 0
        }else{
            if originalFrame.size.height <= 70 {
                
            }else{
                originalFrame.origin.y = originalFrame.origin.y + point.y
            }
            
        }
        if originalFrame.size.height < 70 {
            originalFrame.size.height = 70
        }else{
            if originalFrame.origin.y <= 0 {
                
            }else{
                originalFrame.size.height = originalFrame.size.height - point.y
            }
        }
        if originalFrame.size.width < 180 {
            originalFrame.size.width = 180
        }else if originalFrame.size.width + originalFrame.origin.x > superviewMaxX {
            originalFrame.size.width = superviewMaxX - originalFrame.origin.x
        }else{
            originalFrame.size.width = originalFrame.size.width + point.x
        }
        
        self.frame = originalFrame
        pan.setTranslation(CGPoint.zero, in: self)
    }

相关文章

  • swift5.x view平移以及拖动四角改变frame

    1、view添加pan手势,移动view在屏幕上的位置,根据需求是否要限制屏幕边界还是父视图边界 2、有时候会遇到...

  • 解答

    1、改变view的frame,layer的frame是否会变化?改变layer.frame,view的frame是...

  • Android的动画详解

    一: 传统 View 动画(Tween/Frame) 1.1 Tween 动画 主要有 4 中:缩放、平移、渐变、...

  • 技术笔试题

    技术笔试题: 1、 改变view的frame,layer的frame是否会变化?改变layer.frame,vie...

  • UIView动画

    目录 定时器动画效果(形变,缩放,平移,时时旋转,时时缩放,时时平移) block动画效果 (改变视图的frame...

  • 键盘位置改变View跟着变化

    键盘位置改变View跟着变化 1、订阅键盘的frame即将改变的通知 //监听键盘frame变化 [[NSNoti...

  • android有关动画梳理

    补间动画 只能作用在view上,只有四种动画,只是改变view的视觉效果,不会改变view真正的属性效果有:平移(...

  • Maya(四) 视图操作

    旋转视图: ALT + 拖动鼠标左键 缩放视图: ALT + 拖动鼠标右键 平移视图: ALT + 拖动鼠标中键 ...

  • 手势拖动tableview

    可以实现向下拖动tableview的时候,tableview不滚动,但frame改变,松手会回弹,在tablevi...

  • 90%的开发者不知道的XCode 断点调试技巧

    使用断点改变变量的值,不用重新运行xcode。 应用场景: 1.假设有个view的frame,我只想改变frame...

网友评论

      本文标题:swift5.x view平移以及拖动四角改变frame

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