从中心以外的点缩放UIView,寻找anchorPoint的替代方案

时间:2011-03-15 22:48:29

标签: ios matrix transform calayer scale

我一直在使用CGAffineTransformMakeScale来扩展UIView。这可以通过它的默认anchorPoint进行扩展,它是(.5,.5) - 中心。我想缩放它以使它向左伸展,就好像它向左侧缩放一样。我可以通过将anchorPoint设置为正确的中心来​​实现此目的。但是,这会导致设置框架等问题。是否有更好的方法来应用我想要的比例变换。我想我可以使用自定义变换矩阵来完成它,但我对矩阵数学并不好。

2 个答案:

答案 0 :(得分:3)

使用anchorPoint,绕过框架怪异只是存储并重新加载它this answer

答案 1 :(得分:0)

首先运行此代码,您将更好地理解。这里lblLabel是我的标签,你可以相应改变。还检查CGPoint(x:10,y:98)和CGPoint(x:10,y:108)作为参数>你的要求。     这将从标签的左上角动画。根据您的要求更改定位点和位置。

self.lblLabel.layer.anchorPoint = CGPoint(x: 0.0,y :0.0)
        self.lblLabel.layer.position = CGPoint(x: 10, y: 98)
        lblLabel.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)

        UIView.animate(withDuration: 1.0) {
             self.lblLabel.layer.position = CGPoint(x: 10, y: 108)
            self.lblLabel.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
        }