Я пытаюсь воспроизвести фрагменты большого пальца Music.app. Я создал demo project для точной настройки математики.CGAffineTransformRotate поведение несовместимо с контроллером вида и просмотра
Сначала я анимировал представления в контроллере, чтобы это было просто. После того, как я это сделал, я решил создать обычай ReflectedKnobView
, чтобы я мог использовать его в других проектах. Я скопировал соответствующий код с контроллера на представление.
Несмотря на то, что я скопировал свой код точно так же, как и в контроллере (внесение соответствующих изменений), но когда я запускаю приложение, вид отличается поведением от контроллера.
В ReflectedKnobView
CGAffineTransformRotate()
перегибает и преображает виды непредсказуемым образом.
код я скопировал:
- (void)updateValues
{
CMRotationRate data = self.mManager.gyroData.rotationRate;
self.xLabel.text = [NSString stringWithFormat:@"%f", RadiansToDegrees(data.x)];
self.yLabel.text = [NSString stringWithFormat:@"%f", RadiansToDegrees(data.y)];
self.zLabel.text = [NSString stringWithFormat:@"%f",RadiansToDegrees(data.z)];
[UIView animateWithDuration:1/20 animations:^{
self.level3Left.transform = CGAffineTransformRotate(self.level3Left.transform, ((data.y/240) + (data.x/200)));
self.level3Right.transform = CGAffineTransformRotate(self.level3Right.transform, ((-1 * data.y)/240) + (data.x/200));
}];
}
level3<Right/Left>
являются UIImageView
s.
Я подозреваю, что CGAffineTransformRotate()
ведет себя по-другому, потому что я вызываю его в одном окне и контроллере в другом.
Загрузите demo project и запустите его на устройстве, если вы не получите то, что я говорю здесь.
Вы загрузили демонстрационный проект? У меня точно такой же код в двух местах, но они вращают представления по-разному. И я не изменил опорную точку, поэтому по умолчанию она находится в центре. – duci9y