我试图做一个简单的加号来检查动画(+ -> ✓
)。但是,出于某种原因,水平线在旋转时会消失。
这是行的代码,vertLine
和horizLine
(它们都是UIButton中的UIViews):
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
在旋转时正在消失。
为什么会发生这种情况,我该如何解决?
我不确定为什么会发生这种情况,但我找到了一个解决方法:
出于某种原因,当我设置horizLine
的起源时,线路变薄了。当我设置中心时它工作得很好。
如果有人知道为什么设置中心工作而设置原点没有,请告诉我!