Каков наилучший подход к изменению свойств вида из-за изменения значения акселерометра? - PullRequest
0 голосов
/ 05 мая 2009

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

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

Ответы [ 4 ]

1 голос
/ 06 мая 2009

Когда вы реализуете метод accelerometer:didAccelerate: в своем UIAccelerometerDelegate, просто используйте оператор if, проверяющий, достаточно ли продолжителен промежуток времени между последним получением обновления, если он достаточно длинный.

В вашем классе, который реализует UIAccelerometerDelegate, вы можете иметь свойство, которое содержит что-то вроде lastTimeUpdated, а затем обновлять его всякий раз, когда вы меняете свое представление

1 голос
/ 05 мая 2009

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

1 голос
/ 05 мая 2009

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

http://en.wikipedia.org/wiki/Moving_average

1 голос
/ 05 мая 2009

Если вы беспокоитесь о слишком частых изменениях, просто используйте аккумулятор; использовать немного кода, который обнаруживает изменения и проверяет системное время; только если прошло достаточно системного времени, вы запускаете (потенциально накопленный) метод изменения.

...