我正在尝试在用户交互期间缩放 UIView,并在视图上实现了 CGAffineTransform,如下所示:
@implementation Tileview
{
CGAffineTransform _tempTransform;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
_tempTransform = self.transform;
self.transform = CGAffineTransformScale(self.transform, 1.2, 1.2);
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
self.transform = _tempTransform;
}
这似乎很好地缩放了视图,但后来我注意到在屏幕上移动视图时开始出现不可预测的结果,并且做了一些研究我了解到这可能是因为我正在使用自动布局。建议是动画层而不是视图对象。
所以我尝试重构上面的代码来使用CATranform3D
,因为它似乎CAAffineTransform
无法应用于图层。但一个CATransform3D
可能是。但我无法弄清楚如何使用该 Transform 对象使图层缩放。
我试图将转换应用于视图层,如下所示:
self.layer.sublayerTransform = CATransform3DMakeScale(1.2, 1.2, 0.0f);
这扩展了我视图的所有子层
但我尝试将其应用于
self.layer = CATransform3DMakeScale(1.2, 1.2, 0.0f);
我收到一条错误消息
分配给只读属性
我还查看了CATransformLayer
课程,但是当尝试将其分配给 self.layer 时,我收到一条错误消息:
从不兼容的类型 CATransform3D 分配给 CATransformLayer
所以我的问题是,有没有办法在不干扰自动布局坐标的情况下缩放 UIView 的图层。