当前位置: 首页 > 知识库问答 >
问题:

我怎样才能增加重力呢

墨星鹏
2023-03-14

所以我试图将重力添加到4个UIButton,但它们没有下降,我将此代码添加到视图中并加载,我不知道为什么这不起作用。这是代码:

//initialize the animator
    var animator = UIDynamicAnimator(referenceView: self.view)
    //add gravity
    let gravity = UIGravityBehavior(items: [redButton!, greenButton!, blueButton!, cameraButton!])
    let direction = CGVectorMake(0.0, 1.0)
    gravity.gravityDirection = direction
    animator.addBehavior(gravity)

我的按钮有红色按钮、绿色按钮、蓝色按钮和相机按钮,我也应用了秋天的方向,但当我运行应用程序时,它们只是静态的。那么,有没有可能给这些按钮增加重力呢?

共有1个答案

公羊英达
2023-03-14

您正在本地向函数声明您的动画师。当函数返回时,动画师从内存中释放,所有动画都停止(实际上viewDidLoad()在生命周期的早期返回,以至于动画永远不会开始)。

声明如下:

var animator: UIDynamicAnimator!

在课堂范围内

类范围是指将其放在类的大括号内:

class Foo {
    var thisVariableIsAtClassScopeAndPersistsAcrossMethods: Int

    func bar() {
        var thisVariableIsAtLocalScopeAndDisappearsWhenFunctionReturns: String
    }
}

并且只在viewDidLoad()中初始化它:

animator = UIDynamicAnimator(referenceView: self.view)

(如果没有惰性技巧,您无法在类范围内初始化它,因为self尚不可用。)

**编辑最终答案**

聊天后,我们解决了误解的答案,现在我们有了:

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var redButton: UIButton!
    @IBOutlet weak var greenButton: UIButton!
    @IBOutlet weak var blueButton: UIButton!
    @IBOutlet weak var cameraButton: UIButton!

    // Declare the animator at class scope so it doesn't get released prematurely.
    var animator: UIDynamicAnimator!

    override func viewDidLoad() {
        super.viewDidLoad()
        //add gravity
        let gravity = UIGravityBehavior(items: [redButton, greenButton, blueButton, cameraButton])
        let direction = CGVectorMake(0.0, 1.0)
        gravity.gravityDirection = direction
        animator.addBehavior(gravity)

        // other viewDidLoad setup code to set attributes of buttons
    }
}

 类似资料:
  • 我最近在skee ball风格游戏的编码方面取得了突破。我在碰撞检测方面遇到了严重问题,stackoverflow的研究人员帮我解决了这个问题。我为我的物体——一个球——编写了一个二人组,以创建一个平滑的滚动效果,因为我无法让它以其他方式平滑移动。我终于有了一个灵光乍现的时刻,并设法使物体逐渐移动,而不是远程传送,并能够消除我的吐温。没有了tween,碰撞检测工作正常。但我还是有一些问题。首先,我

  • 有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:

  • 问题内容: 我试图“ stopPropagation”以防止单击li内的元素(链接)时关闭TwitterBootstrap导航栏下拉菜单。 在Angular中,看起来像指令是执行此操作的地方?所以我有: …但是该方法不属于元素: 我把指令与 有什么建议么? 问题答案: “当前一些指令(即ng:click)停止事件传播。这阻止了与依赖于捕获此类事件的其他框架的互操作性。” - …并且能够在没有指令的

  • 我的笔记本是2010年买的,CPU2410M,RAM 8G。但是每次我启动PyCharm,都需要大约5分钟或更长时间。 如果我使用同一个笔记本,我如何改进PyCharm的启动?PyCharm有什么更好的启动策略吗?

  • 场景z:Zaloguj u cinytkownika który zna swój login i have lo 我导入了所有注释: 导入cucumber.api.java.pl.Jez Eli; 导入cucumber.api.java.pl.oraz; 导入cucumber.api.java.pl.wtedy; 导入cucumber.api.java.pl.zakladaja c; 我的pom

  • 问题内容: 这是一个简单的ArrayList排序程序: 我期望该程序的输出为: 但是当我运行该程序时,我得到的输出为: 为什么会这样?如何使ArrayList进行排序,如预期输出所示? 问题答案: 您可以编写一个自定义比较器: