缩放uivew缩放其子视图问题

时间:2017-03-30 00:26:32

标签: ios xcode subview pinchzoom uipinchgesturerecognizer

我有一个带有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正在缩放。

任何人都知道如何防止缩小子视图?

1 个答案:

答案 0 :(得分:0)

一个视图从它的superview继承了它的引用框架。如果将变换应用于视图,则会影响视图及其所有视图。这就像收缩一张纸上的图纸一样。当然,如果纸张收缩,图纸会缩小。

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