滚动视图中按钮的中心

时间:2018-07-09 22:42:15

标签: ios swift uiscrollview uibutton

我想制作一个动画,在您按下按钮时会在其中创建脉冲。但这在滚动视图上实际上不起作用,因为它实际上是“屏幕”上的特定点,而不是滚动视图上的特定点。 向下滚动时,脉冲的原点保持不变。

@objc func addPulse() {
    let pulse = Pulsing(numberOfPulses: 1, radius: 120, position: playButton.center)
    pulse.animationDuration = 0.8
    pulse.backgroundColor = UIColor.red.cgColor

    self.view.layer.insertSublayer(pulse, below: playButton.layer)

该位置必须来自CGPoint类型。

2 个答案:

答案 0 :(得分:0)

如果使用的是ScrollView,请更好地使用滚动视图的中心而不是按钮的中心,因为滚动时该按钮将消失。因此,当您创建Pulsing对象时,请使用self.view.center作为位置。

@objc func addPulse() {
    let pulse = Pulsing(numberOfPulses: 1, radius: 120, position: self.view.center)
    pulse.animationDuration = 0.8
    pulse.backgroundColor = UIColor.red.cgColor

    self.view.layer.insertSublayer(pulse, below: playButton.layer)
}

答案 1 :(得分:0)

根据您提供的少量上下文,我将继续假设您在UIScrollView中有一个按钮,并且需要在按钮后面添加脉冲动画,但是问题是随着视图的滚动和按钮的改变动画的位置始终保持在同一位置。另外,我想你在UIViewController类中。

如果我完全猜对了,这就是我认为正在发生的事情:

  • playButton 的位置将始终相同,因为它相对于其父级(在本例中为UIScrollView)处于相对位置。绝对位置就是该项目在屏幕上的位置。
  • 您正在将动画添加到(UIViewController的)UIView内部,而不是UIScrollView本身。滚动时会出现问题。

我的建议是让您尝试:

@objc func addPulse() {
     let pulse = Pulsing(numberOfPulses: 1, radius: 120, position: playButton.center)
     pulse.animationDuration = 0.8
     pulse.backgroundColor = UIColor.red.cgColor

     scrollView.layer.insertSublayer(pulse, below: playButton.layer)
}