Iphone UIPickerView selectRow:Incomonent:使用平滑动画设置动画
我试图创建一个吃角子老虎机(键入off Slot machine,但你可以说在UI级别它会像吃角子老虎机一样工作),所以我使用了Iphone UIPickerView selectRow:Incomonent:使用平滑动画设置动画,iphone,objective-c,ios,animation,uipickerview,Iphone,Objective C,Ios,Animation,Uipickerview,我试图创建一个吃角子老虎机(键入off Slot machine,但你可以说在UI级别它会像吃角子老虎机一样工作),所以我使用了UIPickerView以及一些我如何使它循环的方法。但当我使用带有动画值的函数选择row:incomonent:animated:旋转它时。它的动画有点马虎,或者你可以说,当我们用手旋转UIpickerview时,它还不够酷 草率动画意味着,当我们用手移动UIPickerView时,它会在动画结束时降低速度,这种效果看起来非常好,但当我使用函数selectRow:in
UIPickerView
以及一些我如何使它循环的方法。但当我使用带有动画值的函数选择row:incomonent:animated:
旋转它时。它的动画有点马虎,或者你可以说,当我们用手旋转UIpickerview
时,它还不够酷
草率动画意味着,当我们用手移动UIPickerView
时,它会在动画结束时降低速度,这种效果看起来非常好,但当我使用函数selectRow:incomonent:animated:
时,我无法获得该动画
extension UIPickerView {
func slowSelectRow(_ row: Int, inComponent component: Int = 0) {
let currentSelectedRow = selectedRow(inComponent: component)
guard currentSelectedRow != row else {
return
}
let diff = (currentSelectedRow > row) ? -1 : 1
let newRow = currentSelectedRow + diff
selectRow(newRow, inComponent: component, animated: true)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) {
self.slowSelectRow(row, inComponent: component)
}
}
}
有没有办法获得动画???您是否尝试从uipickerview获取递归描述? 我认为有些地方应该有一个滚动视图里面。 尝试获取scrollview引用,并使用自定义动画将其滚动到所需位置。要获取视图层次结构,请尝试在选择器视图上使用递归描述。 这只是一个暗示。
希望这有帮助。您是否尝试从uipickerview获取递归描述? 我认为有些地方应该有一个滚动视图里面。 尝试获取scrollview引用,并使用自定义动画将其滚动到所需位置。要获取视图层次结构,请尝试在选择器视图上使用递归描述。 这只是一个暗示。
希望这能有所帮助。不确定它是否仍然相关,但当我偶然发现同样的问题时,我为UIPickerView做了一个扩展,并伪造了慢速动画
extension UIPickerView {
func slowSelectRow(_ row: Int, inComponent component: Int = 0) {
let currentSelectedRow = selectedRow(inComponent: component)
guard currentSelectedRow != row else {
return
}
let diff = (currentSelectedRow > row) ? -1 : 1
let newRow = currentSelectedRow + diff
selectRow(newRow, inComponent: component, animated: true)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) {
self.slowSelectRow(row, inComponent: component)
}
}
}
不确定它是否仍然相关,但当我偶然发现同一个问题时,我为UIPickerView做了一个扩展,并伪造了慢速动画
extension UIPickerView {
func slowSelectRow(_ row: Int, inComponent component: Int = 0) {
let currentSelectedRow = selectedRow(inComponent: component)
guard currentSelectedRow != row else {
return
}
let diff = (currentSelectedRow > row) ? -1 : 1
let newRow = currentSelectedRow + diff
selectRow(newRow, inComponent: component, animated: true)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) {
self.slowSelectRow(row, inComponent: component)
}
}
}