旋转&捏(缩放)手势使父母UIView和他的子视图框架混乱

时间:2016-02-24 17:55:14

标签: objective-c swift uiview uigesturerecognizer scale

我正在尝试实施Pinch&在包含多个子视图(UIButton,UITextView)的UIView上旋转手势。 以下为方便起见编写了代码

我猜我错过了什么。不知道是什么。谢谢!

结果:

enter image description here

代码

比例:

 var scaleAnchorPoint = CGPoint()

    func handleSizeIncreasing(sender:UIPinchGestureRecognizer) {
        if sender.state == UIGestureRecognizerState.Began
        {
            print("Began")
            scaleAnchorPoint = self.center
        }

        else if sender.state == UIGestureRecognizerState.Changed
        {
            txtView.transform = CGAffineTransformScale(txtView.transform, sender.scale, sender.scale)
            sender.scale = 1.0
            self.frame.size = CGSizeMake(txtView.frame.width + buttonSize, txtView.frame.height + buttonSize)
            self.center = scaleAnchorPoint
            updateViews(scaleAnchorPoint)
            print("Changed")
        }

    }

旋转:

var rotateAnchorPoint = CGPoint()

func handleRotate(sender : UIRotationGestureRecognizer) {

    if sender.state == UIGestureRecognizerState.Began
    {
        print("Began")
        rotateAnchorPoint = self.center
    }

    else if sender.state == UIGestureRecognizerState.Changed
    {
        sender.view!.transform = CGAffineTransformRotate(sender.view!.transform, sender.rotation)
        sender.rotation = 0
        updateViews(rotateAnchorPoint)
        print("Changed")
    }



}

边:

 func updateViews(aroundPoint : CGPoint  )
    {
        self.center = aroundPoint
        txtView.frame.origin = CGPointMake(buttonSize / 2, buttonSize / 2)
        txtView.contentSize = txtView.frame.size
    }
    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
    }

1 个答案:

答案 0 :(得分:0)

想出来。简单地说,当比例/框架发生变化时,不像我在这里那样访问Frameself.frame.size = CGSizeMake(txtView.frame.width + buttonSize, txtView.frame.height + buttonSize)

访问self.bounds ,就像这样 -

 self.bounds.size = CGSizeMake(txtView.frame.width + buttonSize, txtView.frame.height + buttonSize)

享受!