缩放 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 正在缩放。
谁知道如何防止子视图被缩放?
视图从它的父视图继承它的参考框架。如果将转换应用于视图,它会影响视图及其所有父视图。就像把一张画了画的纸缩小一样。纸变小了,画当然变小了。
不要将其作为您的其他视图的子视图。让它们成为您放置在正在缩小的视图之上的兄弟视图。这样他们就不会受到影响。
我有一个带有 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 正在缩放。
谁知道如何防止子视图被缩放?
视图从它的父视图继承它的参考框架。如果将转换应用于视图,它会影响视图及其所有父视图。就像把一张画了画的纸缩小一样。纸变小了,画当然变小了。
不要将其作为您的其他视图的子视图。让它们成为您放置在正在缩小的视图之上的兄弟视图。这样他们就不会受到影响。