#ios #uiimageview #trigonometry
#iOS #uiimageview #тригонометрия
Вопрос:
Я подклассировал UIView как объект-аватар, который содержит значок (UIImageView), имя (UILabel) и идентификатор (UILabel). В зависимости от ориентации координат X, Y я хочу, чтобы значок был повернут. Например, скажем, ориентация.X = 1 и ориентация.Y = 1 даст угол 45 градусов. X и Y могут быть любыми между -1 и 1.
Я не уверен, как это вычисляется математически, и API cocoa не вызывает его. Есть идеи, с чего начать?
Ответ №1:
для плавности я добавил анимацию:
- (void)rotateView:(UIView *)view withDuration:(NSTimeInterval)duration andRadians:(CGFloat)radians
{
// Setup the animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:duration];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationBeginsFromCurrentState:YES];
// The transform matrix
CGAffineTransform transform = CGAffineTransformMakeRotation(radians);
view.transform = transform;
// Commit the changes
[UIView commitAnimations];
}
Редактировать:
для других углов вам необходимо создать собственную матрицу вращения.
Прочитайте здесь, как создать пользовательское аффинное преобразование в Objective-c
Надеюсь, это поможет.
Комментарии:
1. Я не хочу, чтобы изображение поворачивалось вокруг центра, поскольку оно портит изображение
2. Я добавил свой пост, надеюсь, это поможет.
Ответ №2:
Вам нужно изучить тригонометрические функции — в частности acos
, и asin
.
Эта статья может быть полезной.