我有一个子视图控制器,其视图已添加为父视图上的子视图。我想从左上角的1.1倍缩放1.1倍。我尝试这样做:
override func viewDidLoad() {
self.view.layer.anchorPoint = CGPoint(x: 0, y: 0)
}
func scaleMyView() {
self.view.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
}
,但这似乎可以重新计入左上角的视图,然后扩展。
在这里阅读了一些答案之后,我尝试设置视图层的position
这样的内容:
let center = self.view.frame.origin
self.view.layer.anchorPoint = CGPoint(x: 0, y: 0)
self.view.layer.position = center
但这将视图移至屏幕中心。我如何将其从左上角缩放而不在父视图中移动?
您完全正确并且非常接近。要更改锚定转换的位置,您需要更改图层的锚点。但是,当您这样做时,您需要更改图层的位置以补偿,否则将移动。
令self.v
是我们要转换的视图:
let lay = self.v.layer
let p = lay.frame.origin
lay.anchorPoint = CGPoint(x: 0, y: 0)
lay.position = p
lay.setAffineTransform(CGAffineTransform(scaleX: 1.1, y: 1.1))