UIView旋转消失

时间:2018-09-03 23:37:44

标签: ios swift animation

我正在尝试做一个简单的加号来检查动画(+ -> ✓)。但是由于某种原因,水平线会随着旋转而消失。

这是vertLinehorizLine行的代码(它们都是UIButton中的UIView):

let inset = imageEdgeInsets.top
let lineWidth: CGFloat = 1

vertLine.bounds = CGRect(origin: CGPoint.zero, size: CGSize(width: lineWidth, height: frame.height - inset * 2))
vertLine.center = CGPoint(x: frame.width / 2, y: frame.height / 2)
vertLine.backgroundColor = tintColor
addSubview(vertLine)

horizLine.bounds = CGRect(origin: CGPoint.zero, size: CGSize(width: frame.width - inset * 2, height: lineWidth))
horizLine.center = CGPoint(x: frame.width / 2, y: frame.height / 2)
horizLine.backgroundColor = tintColor
addSubview(horizLine)

这是为它们设置动画的代码(动画很慢,所以我可以看到发生了什么事情):

UIView.animate(withDuration: 2) {
    self.vertLine.transform = CGAffineTransform(rotationAngle: -CGFloat.pi * 3 / 4)
    self.vertLine.center.x = self.frame.width / 2 + self.vertLine.frame.width * 1 / 4
    self.vertLine.center.y = self.frame.height / 2

    self.horizLine.transform = CGAffineTransform(rotationAngle: -CGFloat.pi * 3 / 4).scaledBy(x: 0.5, y: 1)
    self.horizLine.frame.origin.x = self.vertLine.frame.origin.x - self.horizLine.frame.width
    self.horizLine.frame.origin.y = self.frame.height / 2

    print(self.horizLine.frame)
    print(self.vertLine.frame)
}

This is what it looks like。如您所见,horizLine随着旋转而消失。

为什么会这样,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我不确定为什么会发生这种现象,但是我找到了一种解决方法:

由于某些原因,当我设置horizLine的原点时,该行变得稀疏。当我设置中心时,效果很好。

如果有人知道为什么设置中心有效而设置原点无效的原因,请务必告知!