CGAffineTransform - 将图像锚定到基线?
CGAffineTransform - anchor image to baseline?
我是 expanding/reducing 完美使用 CGAffineTransform 的图像,但它会围绕图像的中心点发生变化。我想保持它 fixed/anchored 到基线?这可能吗?图像显示在 UIImageView 中。
UIView.animate(withDuration: 0.0, animations: {
// Sunrise
let multiplierSunrise = CGFloat(self.sunriseTime/self.sunriseMax)
var transformSunrise = CGAffineTransform.identity
transformSunrise = transformSunrise.translatedBy(x: 0, y: (self.imageHeight*(1-(multiplierSunrise/2))-(self.imageHeight/2)))
transformSunrise = transformSunrise.scaledBy(x: 1, y: 1*multiplierSunrise )
self.sunriseView.transform = transformSunrise
})
变换应用在视图层的锚点周围。默认情况下这是图层的边界中心,但您可以移动它,以百分比形式描述所需的锚点。所以如果你想在视图底部周围应用变换,你可以说:
self.sunriseView.layer.anchorPoint = CGPoint(x:0.5, y:1)
不过,你这么一说,景色本身就动了!为防止这种情况,还要移动视图的 center
以进行补偿:
self.sunriseView.center.y += self.sunriseView.bounds.height/2
self.sunriseView.layer.anchorPoint = CGPoint(x:0.5, y:1)
这是一个例子,完成后,我继续应用 y 轴比例变换。如您所见,我们保持底部稳定:
我是 expanding/reducing 完美使用 CGAffineTransform 的图像,但它会围绕图像的中心点发生变化。我想保持它 fixed/anchored 到基线?这可能吗?图像显示在 UIImageView 中。
UIView.animate(withDuration: 0.0, animations: {
// Sunrise
let multiplierSunrise = CGFloat(self.sunriseTime/self.sunriseMax)
var transformSunrise = CGAffineTransform.identity
transformSunrise = transformSunrise.translatedBy(x: 0, y: (self.imageHeight*(1-(multiplierSunrise/2))-(self.imageHeight/2)))
transformSunrise = transformSunrise.scaledBy(x: 1, y: 1*multiplierSunrise )
self.sunriseView.transform = transformSunrise
})
变换应用在视图层的锚点周围。默认情况下这是图层的边界中心,但您可以移动它,以百分比形式描述所需的锚点。所以如果你想在视图底部周围应用变换,你可以说:
self.sunriseView.layer.anchorPoint = CGPoint(x:0.5, y:1)
不过,你这么一说,景色本身就动了!为防止这种情况,还要移动视图的 center
以进行补偿:
self.sunriseView.center.y += self.sunriseView.bounds.height/2
self.sunriseView.layer.anchorPoint = CGPoint(x:0.5, y:1)
这是一个例子,完成后,我继续应用 y 轴比例变换。如您所见,我们保持底部稳定: