Objective c 轮换及;挤压(缩放)手势会弄乱父视图及其子视图框架

Objective c 轮换及;挤压(缩放)手势会弄乱父视图及其子视图框架,objective-c,swift,uiview,uigesturerecognizer,scale,Objective C,Swift,Uiview,Uigesturerecognizer,Scale,我试图在包含多个子视图(UIButton、UITextView)的UIView上实现挤压和旋转手势。 为了您的方便,将代码组织在下面 我猜我错过了什么。不知道那是什么。谢谢大家! 结果: 代码 比例: var scaleAnchorPoint = CGPoint() func handleSizeIncreasing(sender:UIPinchGestureRecognizer) { if sender.state == UIGestureRecognizerSt

我试图在包含多个子视图(UIButton、UITextView)的UIView上实现挤压和旋转手势。 为了您的方便,将代码组织在下面

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

结果:

代码

比例:

 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")
    }



}
一方:


我明白了。简单地说,当缩放/帧发生变化时,不要像我在这里那样访问
self.frame.size=CGSizeMake(txtView.frame.width+buttonize,txtView.frame.height+buttonize)

访问self.bounds,如下所示-

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

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