Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIPickerView selectRow:Incomonent:使用平滑动画设置动画_Iphone_Objective C_Ios_Animation_Uipickerview - Fatal编程技术网

Iphone UIPickerView selectRow:Incomonent:使用平滑动画设置动画

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

我试图创建一个吃角子老虎机(键入off Slot machine,但你可以说在UI级别它会像吃角子老虎机一样工作),所以我使用了
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)
        }
    }
}