Как вращать иглу (для измерителя уровня звука) о ее происхождении? - PullRequest
0 голосов
/ 19 ноября 2010

Привет, так что это моя ситуация до сих пор. Я добавил UIImageView в Interface Builder и установил для него изображение иглы в формате .png (Needle.png), а также подключил его к соответствующему IBOutlet в XCode.

В моем viewDidLoad: метод, который я устанавливаю точку привязки,

- (void)viewDidLoad {
    [super viewDidLoad];

    [needle.layer  setAnchorPoint:CGPointMake( 0.5, 1 )];
}

И я также создал кнопку в Интерфейсном Разработчике и подключил ее к IBAction в XCode, эта кнопка выполняет блок анимации,

- (IBAction)animate {

 [UIView beginAnimations:@"rotate" context:nil];
 [UIView setAnimationDuration:1.0];
 self.needle.transform = CGAffineTransformMakeRotation(10 * M_PI / 180);
 [UIView commitAnimations];

}

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

Например, если у меня есть значение в децибелах, которое дает мне текущий уровень в децибелах в комнате, я бы хотел, чтобы эта стрелка отражала это значение (то есть 10 ° == 10 дБ), и так как это значение постоянно меняется, Я хочу, чтобы моя игла вращалась по часовой стрелке или против часовой стрелки соответственно.

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

1 Ответ

3 голосов
/ 19 ноября 2010

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

Изменение значения вращения при изменении «постоянно меняющегося значения».

Что является стимулом для изменения этого значения? Поместите код, чтобы изменить вращение там.

Если значением является KVO - вы можете использовать этот механизм для изменения вращения при изменении KVO.

Также - звучит так, как будто вы захотите внести изменения в блок анимации, чтобы сделать движения иглы более плавными. Скажем, например, что значение меняется только раз в секунду - внесите изменение в блок анимации, который будет меняться в течение секунды. Таким образом, движение иглы будет менее "резким".

Имейте в виду, что если вы делаете анимацию, установите setAnimationBeginsFromCurrentState - так что если вы измените значения (и повторно оживите) в середине существующей анимации, это будет "делать правильно".

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