缩放 uiview 缩放它的子视图问题

Scaling uivew scales its subview issue

我有一个带有 imageview 的容器视图和带有圆形的 circleView,在捏手势时我想缩放 imageview 而不是带有圆形的 circleView。

下面是我的代码

if(gestureRecognizer.state == .began || gestureRecognizer.state == .changed) {

        let currentScale: CGFloat = containerView.layer.value(forKeyPath: "transform.scale") as! CGFloat

        // Constants to adjust the max/min values of zoom
        let kMaxScale: CGFloat = 2.0
        let kMinScale: CGFloat = 1.0

        var newScale = 1 - (lastScale - gestureRecognizer.scale)
        // new scale is in the range (0-1)

        newScale = min(newScale, kMaxScale / currentScale)
        newScale = max(newScale, kMinScale / currentScale)
        containerView.transform = containerView.transform.scaledBy(x: newScale, y: newScale)

        lastScale = gestureRecognizer.scale
    }

关于缩放容器视图 imageView 以及 circleView 正在缩放。

谁知道如何防止子视图被缩放?

视图从它的父视图继承它的参考框架。如果将转换应用于视图,它会影响视图及其所有父视图。就像把一张画了画的纸缩小一样。纸变小了,画当然变小了。

不要将其作为您的其他视图的子视图。让它们成为您放置在正在缩小的视图之上的兄弟视图。这样他们就不会受到影响。