Как сделать так, чтобы сборщик вращался несколько раз? - PullRequest
0 голосов
/ 03 октября 2011

Я пытаюсь заставить сборщик вращаться несколько раз, прежде чем приземлиться на определенный ряд. Я попытался использовать для и сделать пока циклы. Я даже пытался вызывать несколько методов подряд, но каждый раз сборщик перезагружается только один раз, хотя я советую перезагружать его несколько раз, прежде чем окончательно приземлиться в выбранную строку, например так:

int newValue = random() % [self.inputNames count];
[payPicker selectRow:newValue inComponent:0 animated:YES];
[payPicker reloadComponent:0];
NSDate *future = [NSDate dateWithTimeIntervalSinceNow: 2.0 ];
[NSThread sleepUntilDate:future];

newValue = random() % [self.inputNames count];
[payPicker selectRow:newValue inComponent:0 animated:YES];
[payPicker reloadComponent:0];

[NSThread sleepUntilDate:future];

Я делаю описанное выше примерно три или четыре раза, и каждый раз, когда сборщик появляется только один раз, перезагружается и попадает в последний выбранный ряд. Есть ли что-то особенное, что я должен сделать, или можно ли вообще заставить сборщика вращаться? Если бы я мог заставить его прыгать случайным образом между вариантами строк перед приземлением на один, я был бы в порядке с этим. Спасибо !!

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Не спите поток пользовательского интерфейса.Никакая анимация не начнется, пока вы не выйдете из этого метода, после всего вашего сна.Так что вернитесь из метода с первым запросом анимации на сборщик.Выполните последующие запросы анимации средства выбора в обратных вызовах таймера после завершения предыдущей анимации средства выбора.Промойте и повторите при необходимости.

Способ, которым другие приложения делают это, вообще не использует реальный сборщик, а накладывает на элемент управления сборщика последовательность анимированных изображений, которая просто выглядит как вращение сборщика.Затем удалите фальшивую анимацию, чтобы показать идентичный, но настоящий подборщик внизу.Преимущество вашего собственного мультипликационного фильма в том, что вы можете заставить фальшивый сборщик вращаться так, как не умеет настоящий сборщик.

0 голосов
/ 03 октября 2011

Возможно, вы могли бы попробовать выбрать случайные строки, прежде чем выбрать фактическую строку. Например, если вы хотите выбрать строку 0, выберите строки в следующем порядке - 9, 2, 15, 0. Я не думаю, что представление выбора будет вращаться, если оно уже находится в строке, в которую предполагается перейти.

Кроме того, вы должны выбирать строки каждый раз, когда ваш метод pickerView:didSelectRow:inComponent: достигает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...