【问题标题】:Possible to animate NSSwitch when changing state programatically?以编程方式更改状态时可以为 NSSwitch 设置动画吗?
【发布时间】:2021-12-21 19:46:14
【问题描述】:

我在一个函数中控制一个 NSSwitch 状态。我之前声明了 trigger1ToggleOut 插座,当我触发该功能时,开关打开,但它立即发生,没有滑动动画。 有没有办法让它动画? (就像您可以使用进度指示器一样)

func turnSwitchOn()
    {
      trigger1ToggleOut.state = .on
    }

任何帮助都会很棒。

【问题讨论】:

  • 引用苹果文档“off 和 on 值表示开关处于关闭或打开位置。开关将关闭以外的任何值视为打开。通过 animator() 代理设置此属性动画切换到新值。”我想这回答了你的问题。不是 mac 开发人员,所以不添加任何代码作为答案:)

标签: swift macos


【解决方案1】:

你可以将 switch 声明为 -

var mySwitch = UISwitch()

设置开关开启

mySwitch.setOn(true, animated: true)

为了关闭它关闭

mySwitch.setOn(false, animated: true)

这将在更改状态时进行动画处理。

【讨论】:

  • 我试过这个,但我得到类型为“NSSwitch”的值没有成员“setOn”。这是否可能仅适用于 iOS 而不适用于 MacOS?
  • 是的,它适用于 iOS。对于 MacOS,您可以在代码中使用 animator().state 而不是 state
  • 谢谢,就是这样!
【解决方案2】:

添加我的评论作为答案,引用apple doc

off 和 on 值表示开关处于关闭或打开状态 位置。开关将除 off 以外的任何值视为 on。环境 这个属性通过 animator() 代理动画切换到 新值。

因此您可以将turnSwitchOn 方法更改为使用animator() proxy,如下所示

    func turnSwitchOn() {
        trigger1ToggleOut.animator().state = .on
    }

这是O/P

【讨论】:

  • @moonmonkey 你试过这个吗?你的问题没有解决吗?你还有什么问题吗?
猜你喜欢
  • 2011-07-01
  • 2021-01-06
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多