每当我变换盒子时,边框宽度就会变得不均匀。
我尝试在每次转换后重新绘制框架,但问题仍然存在。这是相关代码:
@objc func pinchedView(_ sender:UIPinchGestureRecognizer){
box.transform = box.transform.scaledBy(x: 1.0, y: sender.scale)
box.frame = CGRect(x: box.frame.minX, y: box.frame.minY, width: box.frame.width, height: box.frame.height)
box.layer.borderWidth = 1
sender.scale = 1
}
那么如何在转换后保持恒定的边框宽度呢?
最佳答案
如果您使用transform
来缩放 View ,那将缩放所有内容,包括边框。相反,您只需调整 View 的 frame
。
例如,如果您直接定义 View 的 frame
(并且您没有使用约束),那么您将:
var oldHeight: CGFloat = 0
@objc func handlePinch(_ gesture: UIPinchGestureRecognizer) {
switch gesture.state {
case .began:
oldHeight = subview.frame.height
case .changed:
subview.frame = CGRect(x: subview.frame.minX, y: subview.frame.minY, width: subview.frame.width, height: oldHeight * gesture.scale)
default:
break
}
}
或者,如果您正在使用约束,您可以将 @IBOutlet
设置为高度约束,例如,然后执行如下操作:
@IBOutlet var heightConstraint: NSLayoutConstraint!
var oldHeight: CGFloat = 0
@objc func handlePinch(_ gesture: UIPinchGestureRecognizer) {
switch gesture.state {
case .began:
oldHeight = heightConstraint.constant
case .changed:
heightConstraint.constant = oldHeight * gesture.scale
default:
break
}
}
关于ios - View 转换后如何修复不均匀的边框宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57085154/