Как нарисовать повернутый UIView с тенью, но без поворота тени

Я бы хотел, чтобы после поворота тень применялась правильно. Это мой код:

myButton.transform = CGAffineTransformMakeRotation(M_PI / 180.0 * 90.0);

myButton.layer.shadowOffset = CGSizeMake(12.0, 12.0);
myButton.layer.shadowRadius = 2.0;
myButton.layer.shadowOpacity = 0.8;
myButton.layer.shadowColor = [UIColor blackColor].CGColor;

Без поворота тень выглядит нормально:

enter image description here

Но после поворота на 90 ° тень также поворачивается:

enter image description here

Могу ли я что-нибудь с этим сделать, не отменяя метод drawRect, и рисование низкого уровня? Или, может быть, какой-то метод, который исправляет shadowOffset с заданным углом поворота? Легко вручную скорректировать смещение на 90 °, так что это не вариант;)

Это должно выглядеть так:

enter image description here

Заранее спасибо!

С помощью Бартоша Цехановски это работает!

float angleInRadians = M_PI / 180.0 * -35.0;

myButton.transform = CGAffineTransformMakeRotation(angleInRadians);

myButton.layer.shadowOffset = [self correctedShadowOffsetForRotatedViewWithAngle:(angleInRadians) 
                                                          andInitialShadowOffset:CGSizeMake(12.0, 12.0)];
myButton.layer.shadowRadius = 2.0;
myButton.layer.shadowOpacity = 0.8;
myButton.layer.shadowColor = [UIColor blackColor].CGColor;

Это работает! приводит к:

enter image description here

вместо

enter image description here

13
задан Nick Weaver 27 April 2011 в 18:35
поделиться

0 ответов