我有一个带有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正在缩放。
任何人都知道如何防止缩小子视图?
答案 0 :(得分:0)
一个视图从它的superview继承了它的引用框架。如果将变换应用于视图,则会影响视图及其所有视图。这就像收缩一张纸上的图纸一样。当然,如果纸张收缩,图纸会缩小。
不要将其作为您的其他观点子视图。让它们放置在正在缩小的视图顶部的兄弟视图。这样他们就不会受到影响。