问题:
使用CGAffineTransform时,我失去了UIView及其所有子视图的质量。
代码
我当前正在运行以下代码来缩放和移动我的UIView。
func animate(show: Bool, navigationController: UINavigationController) {
let viewWidth = UIScreen.main.bounds.width
let scale: CGFloat = 0.7
UIView.animate(withDuration: 0.5, animations: {
if !show {
var t = CGAffineTransform.identity
t = t.scaledBy(x: scale,
y: scale)
t = t.translatedBy(x: viewWidth * 0.6, y: 0)
navigationController.view.transform = t
} else {
navigationController.view.transform = .identity
}
}) { (complete) in
if show {
let sideMenuView = UIApplication.shared.keyWindow?.viewWithTag(-253)
sideMenuView?.removeFromSuperview()
}
}
}
但是当我回到原来的状态时,一切都是像素化和低质量的。
我已经尝试过手机和模拟器。 Ive删除了比例因子,问题仍然存在。 Ive还尝试将值设置为原始值。
示例
var t = CGAffineTransform.identity
t = t.scaledBy(x: 1,
y: 1)
t = t.translatedBy(x: 0, y: 0)
navigationController.view.transform = t
问题
使用CGAffineTransform时是否可以保留质量?
谢谢
托马斯
答案 0 :(得分:0)
已解决
真的很简单。
设置rasterizationScale解决了该问题。
func animate(show: Bool, navigationController: UINavigationController) {
let viewWidth = UIScreen.main.bounds.width
let scale: CGFloat = 0.7
navigationController.view.layer.rasterizationScale = UIScreen.main.scale
UIView.animate(withDuration: 0.5, animations: {
if !show {
var trans = CGAffineTransform.identity
trans = trans.scaledBy(x: scale,
y: scale)
trans = trans.translatedBy(x: viewWidth * 0.6, y: 0)
navigationController.view.transform = trans
} else {
navigationController.view.transform = .identity
}
}) { (complete) in
if show {
let sideMenuView = UIApplication.shared.keyWindow?.viewWithTag(-253)
sideMenuView?.removeFromSuperview()
}
}
}