我注意到一个问题,即调整视图的大小,但边界看起来不会改变(所以在捏住一个视图之后,您必须使用UIView的边缘来捏进一步)一旦调用UIPinchGestureRecognizer就更改UIView的边界
@IBAction private func handlePinch(_ sender: UIPinchGestureRecognizer) {
if let view = sender.view {
view.transform = view.transform.scaledBy(x: sender.scale, y: sender.scale)
sender.scale = 1
}
}
我发现了一个可能的答案计算器是iphone uiview - resize frame to fit subviews了一个扩展,调整大小以适应子视图,但在对象的行为没有明显的差异。
@IBAction private func handlePinch(_ sender: UIPinchGestureRecognizer) {
if let view = sender.view {
view.transform = view.transform.scaledBy(x: sender.scale, y: sender.scale)
sender.scale = 1
}
self.resizeToFitSubviews()
}
extension UIView {
func resizeToFitSubviews() {
let subviewsRect = subviews.reduce(CGRect.zero) {
$0.union($1.frame)
}
let fix = subviewsRect.origin
subviews.forEach {
$0.frame.offsetBy(dx: -fix.x, dy: -fix.y)
}
frame.offsetBy(dx: fix.x, dy: fix.y)
frame.size = subviewsRect.size
}
如何使捏(最终handleRotate函数具有相同的问题)工作正确地调整边界?