Ios CGAffineTransformScale中的锚点故障

Ios CGAffineTransformScale中的锚点故障,ios,objective-c,uibutton,Ios,Objective C,Uibutton,我试图让UIButton缩放,但仍保持在其原始中心点,并且使用CGAffineTransformScale得到了令人困惑的结果 下面是我的UIButton子类中的函数: -(void)shrink { self.transform = CGAffineTransformMakeScale(0.9,0.9); } 使用此代码,按钮将缩放到左上角,但当我添加代码以尝试设置以下任一行的定位点时,按钮将被重新定位到屏幕外的某个位置: [self.layer setAnchorPoint:CGP

我试图让UIButton缩放,但仍保持在其原始中心点,并且使用CGAffineTransformScale得到了令人困惑的结果

下面是我的UIButton子类中的函数:

-(void)shrink {
    self.transform = CGAffineTransformMakeScale(0.9,0.9);
}
使用此代码,按钮将缩放到左上角,但当我添加代码以尝试设置以下任一行的定位点时,按钮将被重新定位到屏幕外的某个位置:

[self.layer setAnchorPoint:CGPointMake(self.frame.size.width/2, self.frame.size.height/2)];
//same result if I use bounds instead of frame
[self.layer setAnchorPoint:self.center];
有趣的是,这条线会使视图向下向右移动一段距离:

[self.layer setAnchorPoint:CGPointMake(0, 0)];

对不起,我知道已经有很多关于这个话题的帖子了,但是我真的读了,并且尝试了至少一打,但仍然无法让它起作用。我可能只是错过了一些非常简单的东西。

默认的定位点是0.5,0.5。这就是为什么将其设置为0时,0会向下和向右移动视图。此外,如果不希望中心移动,则需要在缩放中心后重新调整中心

缩小后重新调整位置即可

-(void)shrink {
    CGPoint centerPoint = self.center;
    self.transform = CGAffineTransformMakeScale(0.9,0.9);
    self.center = centerPoint;
}

使用正确的代码,它仍然从左上角开始缩放。