iOS CGAffineTransformScale保持左锚

时间:2014-04-25 06:25:20

标签: ios objective-c uitableview cgaffinetransformscale

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

self.myTableView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.8, 0.8);

如果我没有设置锚点,则会将其从中心向下缩放,但根据我的要求,我需要保持左上角点固定。为此我已经使用了这个

self.myTableView.layer.anchorPoint = CGPointMake(0, 0);
self.myTableView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.8, 0.8);

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

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

1 个答案:

答案 0 :(得分:5)

试试这个

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

这里是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;
}