我突然意识到,在iOS默认应用程序中切换开关感觉更快。看上去动画已经关机了。
是否存在在UISwitch上更改此行为的设置?
这似乎不起作用:
UISwitch.setAnimationsEnabled(enabled: false)发布于 2019-01-15 20:44:09
我不认为有一个优雅的解决方案,但我找到了一个讨厌的解决方案,实际上有效。
UISwitch有一个子视图,它附带了两个手势识别器:一个用于长按压,一个用于平底。如果子类UISwitch,删除这些手势识别器,并在初始化后添加一个新的手势识别器,则可以实现非动画行为。
请记住,该解决方案在未来的iOS版本中可能无法工作,因为该解决方案所依赖的内部实现可能会发生变化。
下面是对我有用的代码片段:
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来禁用动画。
发布于 2019-05-06 16:16:04
我仍然在想,为什么苹果会悄悄地删除他们的系统应用程序中的动画。-非病征
iOS默认应用程序中的许多区域使其没有动画UISwitch - On/Off按钮,例如
这里断断续续/关闭按钮动画
在我的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版本下开发的。
发布于 2020-08-17 09:17:07
在UISwitch上,您可以使用动画param = false调用setOn
https://stackoverflow.com/questions/54124972
复制相似问题