动画后的UIView表示层错误位置

时间:2017-05-07 19:17:25

标签: ios uiview core-animation uiviewanimation

我使用UIBezierPathCAKeyFrameAnimation进行动画制作'UIView'。

let arcAnimation = CAKeyframeAnimation(keyPath: "position")
arcAnimation.duration = 0.5

let finalSize : CGFloat = 50
let radiusOffset = CGFloat((position - 1) *  10) + finalSize/2
let radius: CGFloat = 20 * CGFloat(position) + radiusOffset
let center = CGPoint(x:item.bounds.size.width/2 + bounds.size.width/2,
                         y: radius + item.bounds.size.height/2)
let topAngle: CGFloat = .pi * 3/2
    let bottomAngle: CGFloat = .pi/2

let path = UIBezierPath(arcCenter: center,
                            radius: radius,
                            startAngle: bottomAngle,
                            endAngle: topAngle,
                            clockwise: !reverse)

arcAnimation.path = path.cgPath
arcAnimation.isRemovedOnCompletion = false
arcAnimation.fillMode = kCAFillModeForwards
arcAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)

此动画合并为CAAnimationGroup,之后一切都很顺利。我的问题是:当动画结束时,表示层框架x的{​​{1}}和y值很奇怪,调试position它们都显示view.layer.presentation()?.frame(-25.0, -25.0, 50.0, 50.0)显示view.layer.presentation()?.position。我需要这些位置来检测动画视图的可见区域内的触摸。

所以我的问题是:

为什么动画结束后会显示这些值?我如何得到合适的?

我正在使用(0,0) hitTest上的view.layer.presentation()检测视频上的触摸,还有其他更简单的解决方案吗?

0 个答案:

没有答案