微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何才能在不带阴影的情况下绘制带有阴影的旋转UIView

如何解决我如何才能在不带阴影的情况下绘制带有阴影的旋转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;
不旋转,阴影看起来很好: 但是将其旋转90°后,阴影也会随之旋转: 在不重写drawRect方法和进行低级绘制的情况下,我能做些什么?还是某些方法可以根据给定的旋转角度校正shadowOffset?手动校正90°的偏移很容易,因此这是没有选择的;) 它看起来应该像这样: 提前致谢! 在Bartosz CiechaNowski的帮助下,现在可以使用!
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;
结果是: 代替     

解决方法

假设
anAngle
以弧度为单位:
- (CGSize)correctedShadowOffsetForRotatedViewWithAngle:(CGFloat)anAngle 
                                andInitialShadowOffset:(CGSize)anOffset
{
    CGFloat x = anOffset.height*sinf(anAngle) + anOffset.width*cosf(anAngle);
    CGFloat y = anOffset.height*cosf(anAngle) - anOffset.width*sinf(anAngle);

    return CGSizeMake(x,y);
}
    ,我认为您可以尝试使用
myButton.layer.shadowOffset = CGSizeMake(-12.0,-12.0);
myButton.layer.shadowOffset = CGSizeMake(12.0,12.0);
如果可以使用,请尝试使用它。您需要使用Trial&Error方法设置阴影。 如果可以解决您的问题,这只是一个建议或技巧。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。