Applying scaling and rotation on a view using CGAffineTransform

前端 未结 4 724
轮回少年
轮回少年 2021-01-11 10:45

So I need to apply some scaling and some rotation to a view (I do this using gestures), so for each gesture I update the current scalling and rotation values with something

4条回答
  •  一整个雨季
    2021-01-11 11:18

    If you start with the identity transform every time, the end result you are setting the subview's transform to will only include the scaling and rotation from the current gesture. Instead of starting with the identity, start with the current transform of the view.

    CGAffineTransform transform = self.theSubViewToTransform.transform;
    transform = CGAffineTransformScale(transform, self.scaleWidth, self.scaleHeight);
    transform = CGAffineTransformRotate(transform, self.rotationAngle);
    self.theSubViewToTransform.transform = transform;
    

    The first time this executes, the transform will start out as the identity transform. On subsequent executions, it will make the new changes on top of the old ones.

提交回复
热议问题