我有一种方法可以放置一堆图层,然后同时定位和调整单个“激活”图层(基本上是用户单击的图层)。包括激活层在内的所有层都是较大层的子层。这是我的方法:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.7]
forKey:kCATransactionAnimationDuration];
}];
for (CALayer *layer in self.inactiveLayers) {
... do some positioning ...
}
CGRect newFrame = activeLayer.frame;
newFrame.origin.x = 50.0;
newFrame.origin.y = 50.0;
newFrame.size.width = 100.0;
newFrame.size.height = 100.0;
activeLayer.frame = newFrame;
[CATransaction commit];
我遇到的问题真的很奇怪。使用上面的代码,没有任何动画运行(甚至不活动层的动画)。但只要我注释掉设置新帧大小和宽度的行,动画就会神奇地重新开始工作。
有什么理由应该发生这种情况吗?