position是anchortPoint在superlayer的點(diǎn),就是當(dāng)前視圖的anchortPoint 在父視圖上相當(dāng)于position泻云,就像bounds和frame的關(guān)系宠纯,position和anchortPoint相互獨(dú)立,改變一個(gè)的值婆瓜,另一個(gè)的值不會(huì)變,他們的關(guān)系是:
position.x = frame.origin.x + anchortPoint.x * bounds.x
因此改變一個(gè)的值只會(huì)改變frame的origin碍讨,如果這一個(gè)的值要重置frame回原來的值蒙秒,否則會(huì)看不到視圖的晕讲,舉一個(gè)縮放的例子:按右上角錨點(diǎn)縮放
view.frame = CGRectMake(0,0, 100, 100);
view.layer.anchorPoint = CGPointMake(1, 0);
// 設(shè)置完anchortPoint必須要重新設(shè)置fame,否則frame根據(jù)上邊的等式frame會(huì)變
view.frame = CGRectMake(0,0, 100, 100);
view.alpha = 0;
// 必須先設(shè)置anchortPoint再設(shè)置affineTransform瓢省,affineTransform是設(shè)置transform,
而transform是應(yīng)用在anchorPoint上的勤婚,如果anchorPoint改變摹量,必須重新設(shè)置transform
view.layer.affineTransform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:1 animations:^{
view.alpha = 1;
view.layer.affineTransform = CGAffineTransformMakeScale(1, 1);
}];