Ios UIView在设置动画到另一个位置时会变形
我对UIView有一个非常愚蠢的问题。我以编程方式创建UIView,然后通过使角半径为视图高度的一半使其成为圆形,如下所示: 但当我尝试将圆设置为不同的位置时,它会像这样变形: 下面是我用来设置视图动画的代码,只是一个简单的UIView.animateWithDuration:Ios UIView在设置动画到另一个位置时会变形,ios,swift,uiview,uiviewanimation,Ios,Swift,Uiview,Uiviewanimation,我对UIView有一个非常愚蠢的问题。我以编程方式创建UIView,然后通过使角半径为视图高度的一半使其成为圆形,如下所示: 但当我尝试将圆设置为不同的位置时,它会像这样变形: 下面是我用来设置视图动画的代码,只是一个简单的UIView.animateWithDuration: UIView.animateWithDuration(2, delay: 0, options: UIViewAnimationOptions.AllowUserInteraction, animations: {
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
你也是
如果是第2种情况,只需拆下管路即可 我也遇到了同样的情况 经过一些研究,我在
setFrame
方法的头文件中找到了注释
//可动画化。若视图已转换,则不要使用框架,因为它将
无法正确反映视图的实际位置。使用边界+
换成中锋
我决定使用
setCenter
而不是setFrame
,这解决了失真问题。在这种情况下,了解您试图调用UIView.animateWithDuration的位置可能会有所帮助。这一个单独的调用看起来不错,而且看起来没有足够的上下文来解释您看到的行为。例如,secondDot
的类型是什么?它是UIView吗?self.secondDot是UIView类型。如果视图已通过不同的动画上下文设置动画,则您应该能够轻松更改视图的位置,而不必打开其他动画上下文。如果不调用UIView.animateWithDuration,只更改视图的原点,会发生什么情况?是的,那行是我试图阻止它变形的,但它不起作用,我只是再次删除它,以确保它看起来仍然像上面的图像(变形)我应该提到,在UIView.animationWithDuration出现之前,圆已经在运动了。我不知道这是否是一个问题