我正在尝试做一个简单的加号来检查动画(+ -> ✓
)。但是由于某种原因,水平线会随着旋转而消失。
这是vertLine
和horizLine
行的代码(它们都是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
随着旋转而消失。
为什么会这样,我该如何解决?
答案 0 :(得分:0)
我不确定为什么会发生这种现象,但是我找到了一种解决方法:
由于某些原因,当我设置horizLine
的原点时,该行变得稀疏。当我设置中心时,效果很好。
如果有人知道为什么设置中心有效而设置原点无效的原因,请务必告知!