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

时间:2016-04-02 13:40:40

标签: ios swift uiview uiviewanimation

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

(UIView)

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

enter image description here

以下是我用于为视图设置动画的代码,只是一个简单的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发生我不知道那可能是一个   问题

2 个答案:

答案 0 :(得分:0)

这条线有什么意义?

self.secondDot.frame.size = self.secondDot.frame.size

你要么

  1. 想要在移动时统一调整圆圈
  2. 与否。
  3. 如果情况1)newSize.width!= newSize.height ...但这是一个问题,因为你的圈子不再是幕后的“方形”。 如果情况2)只是删除线。

答案 1 :(得分:0)

我真的有同样的情况。

经过一些研究,我在setFrame方法

的标题文件中找到了评论
  

//动画。如果视图被转换,请不要使用框架   没有正确反映视图的实际位置。使用边界+   中心代替。

我决定使用setCenter代替setFrame来解决失真问题。