hpi*_*que 30 iphone scaling cgaffinetransform ios
如果我理解正确的缩放UIView
与CGAffineTransform
锚改造中心.
特别是:
self.frame = CGRectMake(0,0,100,100);
self.transform = CGAffineTransformMakeScale(2, 2);
NSLog(@"%f;%f;%f;%f", self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height);
Run Code Online (Sandbox Code Playgroud)
打印:
-50;-50;200;200
Run Code Online (Sandbox Code Playgroud)
如何创建使用特定锚点(例如0; 0)的CGAffineTransform比例?
dea*_*rne 68
(一个)
缩放然后翻译?
就像是 :
CGAffineTransform t = CGAffineTransformMakeScale(2, 2);
t = CGAffineTransformTranslate(t, width/2, height/2);
self.transform = t;
Run Code Online (Sandbox Code Playgroud)
(b)中
设置锚点(这可能是你想要的)
[self layer].anchorPoint = CGPointMake(0.0f, 0.0f);
self.transform = CGAffineTransformMakeScale(2, 2);
Run Code Online (Sandbox Code Playgroud)
(C)
再次设置中心以确保它在同一个地方?
CGPoint center = self.center;
self.transform = CGAffineTransformMakeScale(2, 2);
self.center = center;
Run Code Online (Sandbox Code Playgroud)
小智 5
这是我在Swift5中找到缩放视图同时保持其原点在适当位置 (0,0) 的方法
func animate() {
myView.setAnchorPoint(CGPoint(x: 0, y: 0))
myView.transform = CGAffineTransform(translationX: -0.5, y: -0.5)
let animator = UIViewPropertyAnimator(duration: 0.3, curve: .easeOut) {
self.myView.transform = CGAffineTransform(scaleX: 0.25, y: 0.25)
}
}
extension UIView {
func setAnchorPoint(_ point: CGPoint) {
var newPoint = CGPoint(x: bounds.size.width * point.x, y: bounds.size.height * point.y)
var oldPoint = CGPoint(x: bounds.size.width * layer.anchorPoint.x, y: bounds.size.height * layer.anchorPoint.y);
newPoint = newPoint.applying(transform)
oldPoint = oldPoint.applying(transform)
var position = layer.position
position.x -= oldPoint.x
position.x += newPoint.x
position.y -= oldPoint.y
position.y += newPoint.y
layer.position = position
layer.anchorPoint = point
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
59382 次 |
最近记录: |