iOS CGAffineTransformScale保持左锚

Ahm*_* Z. 2 objective-c uitableview ios cgaffinetransformscale

我正在使用CGAffineTransformScale缩小我的UITableView,它正确缩放它但我似乎无法正确设置锚点.

self.myTableView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.8, 0.8);
Run Code Online (Sandbox Code Playgroud)

如果我没有设置锚点,它会从中心向下缩放,但根据我的要求,我需要保持左上角点固定.为此,我用过这个

self.myTableView.layer.anchorPoint = CGPointMake(0, 0);
self.myTableView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.8, 0.8);
Run Code Online (Sandbox Code Playgroud)

但这并没有正确设置锚..还有一件事我还没用过 AutoLayout

请有人帮我解决这个问题吗?提前致谢..

Ana*_*har 5

试试这个

[self setAnchorPoint:CGPointMake(0, 0.5) forView:recognizer.view]; // for left anchor point
Run Code Online (Sandbox Code Playgroud)

这里是setAnchorPoint

-(void)setAnchorPoint:(CGPoint)anchorPoint forView:(UIView *)view
{
CGPoint newPoint = CGPointMake(view.bounds.size.width * anchorPoint.x,
                               view.bounds.size.height * anchorPoint.y);
CGPoint oldPoint = CGPointMake(view.bounds.size.width * view.layer.anchorPoint.x,
                               view.bounds.size.height * view.layer.anchorPoint.y);

newPoint = CGPointApplyAffineTransform(newPoint, view.transform);
oldPoint = CGPointApplyAffineTransform(oldPoint, view.transform);

CGPoint position = view.layer.position;

position.x -= oldPoint.x;
position.x += newPoint.x;

position.y -= oldPoint.y;
position.y += newPoint.y;

view.layer.position = position;
view.layer.anchorPoint = anchorPoint;
}
Run Code Online (Sandbox Code Playgroud)