Получить текущий угол наклона UIView

Как я могу получить текущий угол наклона изображения?

Код, который я использую для перекоса:

CGAffineTransform t = CGAffineTransformMake(1.0, 0.0, tan(angle*(M_PI/480)), 1.0, 0.0, 0.0);

3 ответа

Решение

Попробуй это:

CGFloat skew_c = [(NSNumber *)[view valueForKeyPath:@"layer.transform.c"] floatValue];

Keypath является приблизительным, но должен работать. CGAffineTransform Сделать документы.

РЕДАКТИРОВАТЬ:

Похоже, CGAffineTransform переводится в 4x4 CATransform3D матрица.

transform является собственностью CALayerof CATransform3D тип.

Это означает, что вы можете получить доступ m11.. m44 параметры с вызовами типа:

CGFloat m11 = [(NSNumber *)[view valueForKeyPath:@"layer.transform.m11"] floatValue];
...
...
CGFloat m44 = [(NSNumber *)[view valueForKeyPath:@"layer.transform.m44"] floatValue];

Вам все еще нужно сделать некоторые вычисления, чтобы получить свой коэффициент перекоса. Вы можете вывести уравнение для вашего c_factor из этого замечательного ответа.

Вы можете попробовать что-то вроде этого:

CGFloat angle = [(NSNumber *)[view valueForKeyPath:@"layer.transform.rotation.z"] floatValue];

Попробуй это:

CGFloat radians = atan2f([self myview].transform.b, [self myview].transform.a);

При этом вы можете получить текущий угол любого UIView,

Продолжайте качаться... наслаждайтесь...:)

Другие вопросы по тегам