Ios UIView在设置动画到另一个位置时会变形

Ios UIView在设置动画到另一个位置时会变形,ios,swift,uiview,uiviewanimation,Ios,Swift,Uiview,Uiviewanimation,我对UIView有一个非常愚蠢的问题。我以编程方式创建UIView,然后通过使角半径为视图高度的一半使其成为圆形,如下所示: 但当我尝试将圆设置为不同的位置时,它会像这样变形: 下面是我用来设置视图动画的代码,只是一个简单的UIView.animateWithDuration: UIView.animateWithDuration(2, delay: 0, options: UIViewAnimationOptions.AllowUserInteraction, animations: {

我对UIView有一个非常愚蠢的问题。我以编程方式创建UIView,然后通过使角半径为视图高度的一半使其成为圆形,如下所示:

但当我尝试将圆设置为不同的位置时,它会像这样变形:

下面是我用来设置视图动画的代码,只是一个简单的UIView.animateWithDuration:

UIView.animateWithDuration(2, delay: 0, options: UIViewAnimationOptions.AllowUserInteraction, animations: {
                    self.secondDot.frame.origin = CGPoint(x: self.view.frame.size.width - self.secondDot.frame.size.width, y: 0)
                    self.secondDot.frame.size = self.secondDot.frame.size
                    }, completion: nil)
我还应该补充一点,圆圈并不总是变形,但更经常的情况是变形。请帮忙,如有任何建议,将不胜感激

编辑:我应该提到的是,圆圈已经在运动中了 UIView.animationWithDuration发生我不知道这是否是一个错误 问题


这条线的意义是什么

self.secondDot.frame.size = self.secondDot.frame.size
你也是

  • 要在移动时均匀调整圆的大小吗
  • 或者不是
  • 如果是案例1),则为newSize.width!=高度…但这是个问题,因为你的圆圈在幕后不再是“正方形”。
    如果是第2种情况,只需拆下管路即可

    我也遇到了同样的情况

    经过一些研究,我在
    setFrame
    方法的头文件中找到了注释

    //可动画化。若视图已转换,则不要使用框架,因为它将 无法正确反映视图的实际位置。使用边界+ 换成中锋


    我决定使用
    setCenter
    而不是
    setFrame
    ,这解决了失真问题。

    在这种情况下,了解您试图调用UIView.animateWithDuration的位置可能会有所帮助。这一个单独的调用看起来不错,而且看起来没有足够的上下文来解释您看到的行为。例如,
    secondDot
    的类型是什么?它是UIView吗?self.secondDot是UIView类型。如果视图已通过不同的动画上下文设置动画,则您应该能够轻松更改视图的位置,而不必打开其他动画上下文。如果不调用UIView.animateWithDuration,只更改视图的原点,会发生什么情况?是的,那行是我试图阻止它变形的,但它不起作用,我只是再次删除它,以确保它看起来仍然像上面的图像(变形)我应该提到,在UIView.animationWithDuration出现之前,圆已经在运动了。我不知道这是否是一个问题