ios - 视图转换后如何修复不均匀的边框宽度?
问题描述
每当我转换盒子时,边框宽度就会变得不均匀。
我尝试在每次转换后重新绘制框架,但问题仍然存在。这是相关代码:
@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
缩放视图,这将缩放所有内容,包括边框。相反,您只需调整frame
视图的。
例如,如果您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
}
}
推荐阅读
- c# - 如何使用访问修饰符声明 sqlConnection、sqlCommand、sqlDataAdapter 和 sqlDataReader?
- swift - Swift 中的正则表达式
- haskell - Haskell quickBatch 测试:Applicative Monoid ZipList
- python - 如何从此板图像中删除阴影
- javascript - 我怎样才能最容易地将此 HTTP 响应解析为 JSON,然后访问 responseText 字段?
- postgresql - 如果所选日期 >= 到 current_date,则使用最小日期更新日期字段,除非所有日期都 >= 到当前日期
- python - Django - 图像未从表单中保存
- arrays - 如何使用 $pull 删除 mongodb 数组中的文档
- amazon-web-services - 将 SSH 连接到我的 ec2 实例并部署代码的 Github 操作
- c# - 传递参数以运行应用程序