【问题标题】:CGAffineTransformRotate keeps shifting to the left incrementally with every clockwise rotationCGAffineTransformRotate 每顺时针旋转一次,就会逐渐向左移动
【发布时间】:2013-10-31 17:25:36
【问题描述】:

这是我正在使用的代码:

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseInOut 动画:^{

                     wheel.transform = CGAffineTransformRotate(wheel.transform, 0.57);

                                          }
                 completion:^(BOOL finished) {

                 }];

自动布局已关闭,因此不是原因。 希望各位大神帮忙分析一下这个问题的原因。 谢谢你:)

【问题讨论】:

    标签: ios xcode5


    【解决方案1】:

    问题是由 IB 生成的约束引起的。如果您不设置任何内容,它将生成左、上、宽和高约束,并且左/上会导致旋转后视图的中心移动以保持上/左角固定。

    您必须手动设置 centerX、centerY、宽度和高度约束,以在旋转时保持视图中心固定。

    【讨论】:

    • 很抱歉我迟到了回复您的回答。我现在刚打开我的MB。添加约束需要启用自动布局,这在我看来确实会造成很多混乱。你觉得我除了这个还能做什么?顺便谢谢你的回答。
    • 你也可以试试这个:[wheel.layer setAffineTransform:CGAffineTransformRotate(wheel.layer.affineTransform, 0.57)];
    • 再次感谢您的回复。我尝试了您提供的代码,但没有任何改变。结果和以前一样,但现在我完全明白会发生什么。轮子不会从它的位置移动,但是每次轮子顺时针旋转时,我为旋转指定的值会不断减小,所以这就是为什么它看起来好像在向左移动。这可能是 Xcode 5 中的错误还是因为我真的不明白发生了什么!
    • 我刚刚设置了你提到的约束,这清除了我在启用自动布局时遇到的混乱,但对于我的真正问题来说,这并不是什么新鲜事!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多