CoreGraphics可以防止其他对象的帧修改?

时间:2014-09-14 23:32:18

标签: iphone xcode animation ios7 core-graphics

刚开始使用iOS开发,请原谅我的无知。我也在这个主题上搜索了一段时间没有成功,但我确定我没有找到合适的条款。

如果我注释掉第一个for循环中的唯一一行,那么下一个for循环似乎完全符合我的预期。如果我把它们都留在那里,我只会看到CG发生的事情而其他物体静止不动。

对象currentGear的转换与在同一视图中的另一个对象上更改的帧有什么关系?为什么执行转换会使其后的帧更改无效?

for (UIImageView *currentGear in self.imageGearCollection)
{
    currentGear.transform = CGAffineTransformRotate(currentGear.transform, (90*M_PI)/180);
}

for (UIButton *currentCrate in self.buttonCrateCollection)
{
    CGRect rectFrame = currentCrate.frame;

    rectFrame.origin.x += 10;

    currentCrate.frame = rectFrame;
}

1 个答案:

答案 0 :(得分:1)

你的问题与Core Graphics没有任何关系。

UIView Class Reference说明frame

  

警告:如果transform属性不是标识转换,则此属性的值未定义,因此应忽略。

所以你所做的事情并非真正允许。

由于您只是想移动视图而不是更改其大小,因此可以通过修改其center属性来实现:

CGPoint center = currentCrate.center;
center.x += 10;
currentCrate.center = center;