在CATranform3D之后,UIView上的边框宽度发生了变化

时间:2017-03-23 16:08:51

标签: ios swift3 calayer catransform3d

我目前正在尝试开发一个代表检测到的网页上的叠加视图的视图。每次检测到页面的矩形时,视图都会动画显示页面的形状。我面临的问题是视图的边框宽度不稳定。我目前正在使用

Transforming a rectangle image into a quadrilateral using a CATransform3D 从@Joe Blow创建的快速回答来进行转换。这是一个扩展UIView的类,从现在起我将调用JoshQuadView。

我在JoshQuadView的图层上添加了一个边框,结果与预期一致。

self.myView.layer.borderWidth = 1.2

self.myView.layer.borderColor = UIColor.white.cgColor

self.myView.layer.allowsEdgeAntialiasing = true

enter image description here

使用JoshQuadView方法应用CATransformation3D后,应用此代码后的结果如下所示。

let point1 = CGPoint(x: 120, y:90)
let point2 = CGPoint(x: 250, y:100)
let point3 = CGPoint(x: 20, y:430)
let point4 = CGPoint(x: 310, y:440)

UIView.animate(withDuration: 1, animations: {

self.myView.transformToFitQuadTopLeft(tl: point1, tr: point2, bl: point3, br: point4)

}, completion:
{
     finished in

     self.myButton.isUserInteractionEnabled = true
})

enter image description here

正如您所看到的那样,边界线宽度在JoshQuadView的顶部边框处显着减小,并且在该视图的底部边框处显着增加。至于边框边框的大小是不同的。

我想要的是拥有稳定的边框线宽。我已经尝试使用UIBezierPath在其上绘制JoshQuadView的边框,但我无法动画来跟随JoshQuadView。

所以问题是: 有没有办法在转换后为视图提供稳定的线宽?

我做了大量的搜索,似乎没有什么能解决我的问题。

0 个答案:

没有答案