首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭UISwitch动画

关闭UISwitch动画
EN

Stack Overflow用户
提问于 2019-01-10 08:55:52
回答 3查看 1.7K关注 0票数 0

我突然意识到,在iOS默认应用程序中切换开关感觉更快。看上去动画已经关机了。

是否存在在UISwitch上更改此行为的设置?

这似乎不起作用:

代码语言:javascript
复制
UISwitch.setAnimationsEnabled(enabled: false)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-15 20:44:09

我不认为有一个优雅的解决方案,但我找到了一个讨厌的解决方案,实际上有效。

UISwitch有一个子视图,它附带了两个手势识别器:一个用于长按压,一个用于平底。如果子类UISwitch,删除这些手势识别器,并在初始化后添加一个新的手势识别器,则可以实现非动画行为。

请记住,该解决方案在未来的iOS版本中可能无法工作,因为该解决方案所依赖的内部实现可能会发生变化。

下面是对我有用的代码片段:

代码语言:javascript
复制
class PTSwitch: UISwitch {

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    let firstSubview = subviews[0]

    guard let gestureRecognizers = firstSubview.gestureRecognizers else {
        return
    }

    for recognizer in gestureRecognizers {
        firstSubview.removeGestureRecognizer(recognizer)
    }

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(gestureRecognized))
    firstSubview.addGestureRecognizer(tapGestureRecognizer)
}

@objc func gestureRecognized() {
    setOn(!isOn, animated: false)
}

}

如您所见,我删除了内置的手势识别器,并添加了一个点击手势识别器。您还可以添加另一个用于pan手势识别,它也应该工作。然后,在手势识别器的回调函数中,我只使用来自UISwitch的UISwitch函数和animated: false来禁用动画。

票数 1
EN

Stack Overflow用户

发布于 2019-05-06 16:16:04

我仍然在想,为什么苹果会悄悄地删除他们的系统应用程序中的动画。-非病征

iOS默认应用程序中的许多区域使其没有动画UISwitch - On/Off按钮,例如

  • Wi,个人热点,下设Settings.app
  • 在Clock.app中设置一个警报

这里断断续续/关闭按钮动画

  • Settings.app下的粗体文本(激活选项,然后收到消息并点击cancel)
  • 开放应用程序Store.app创建Apple并确认使用条款
  • 还有更多的地方..。

在我的iPad 9.7,iPhone 5S和iPhone XS与iOS 12.2可重复性。这是iOS 7和苹果公司从未修复过的iOS默认应用程序的缺陷。

许多第三方应用程序接管了相同的bug,因为自从iOS 7以来,直到今天,它一直没有得到正确的修复。开发人员总是必须自己检查并在应用程序(或用户发现)中修复它。对于特殊的过程,例如,当一个开/关按钮接管了许多功能时,情况就会更糟。许多动画(自iOS 7以来)都被破坏了。

注意!!在iOS 6 (iPhone 5)中,iOS 5 (iPhone 4S)在iOS默认应用程序下的UISwitch开关按钮动画(没有损坏)没有问题。所有第三方应用程序也不存在这些问题,这是在当时的iOS版本下开发的。

票数 0
EN

Stack Overflow用户

发布于 2020-08-17 09:17:07

在UISwitch上,您可以使用动画param = false调用setOn

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54124972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档