【发布时间】:2015-11-28 03:12:50
【问题描述】:
我试图在用户交互期间缩放 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 的图层。
【问题讨论】:
标签: ios catransformlayer