我试图让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 :(得分:0)
默认锚点为0.5,0.5。这就是为什么将其设置为0,0将视图向下移动到右边。此外,如果您不希望中心移动,则需要在缩放后重新调整中心。
收缩后再调整它的位置。
-(void)shrink {
CGPoint centerPoint = self.center;
self.transform = CGAffineTransformMakeScale(0.9,0.9);
self.center = centerPoint;
}