2013-04-23 3 views
1

Я вращаю UIView на основе данных акселерометра, и он отлично работает, за исключением того, что UIView деформирован. Я не уверен, как решить проблему. Вот код в моем методе didAccelerate:Поворот UIView без деформации

float kFilteringFactor = 0.175; 
CGFloat x = acceleration.x * kFilteringFactor + acceleration.x * (1.0 - kFilteringFactor); 
CGFloat y = acceleration.y * kFilteringFactor + acceleration.y * (1.0 - kFilteringFactor); 
float radians = M_PI - atan2(y, x); 
[_horizonView setTransform:CGAffineTransformMakeRotation(radians)]; 

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

ответ

1

какая деформация возникает? Я думаю, что вращение прекрасное.

+0

Если у меня UIView как прямоугольник посередине, он сжимается, пока на 45 градусов он полностью не исчезнет, ​​а затем возрастет> 45 градусов. Я думал, что мне сначала понадобится перевести на начало координат, затем повернуть и перевести назад, но когда я это сделаю, поворот не происходит вообще. –

+0

Вращение применяется вокруг точки привязки слоя UIView, который является центром слоя (0,5, 0,5). Так что лишний перевод не нужен. Я смоделировал ваш код простым красным прямоугольником, и он делает то, что вы хотите. Какую дополнительную модификацию вы делаете на '_horizonView'? – Peteee24

+0

Нет. Я только что воссоздал проект с нуля, чтобы устранить любые странные изменения, но он все тот же. Я не могу понять. Может ли это быть чем-то связанным с системой координат ViewController? Все, что я сделал, это добавить представление, установить его фон, сделать его доступным в моем ViewController, а затем реализовать метод didAccelerate с приведенным выше кодом и инициализировать акселерометр в viewDidLoad. –

Смежные вопросы