gpt4 book ai didi

ios - 在 UIViews 上制作投影

转载 作者:行者123 更新时间:2023-11-28 20:07:18 24 4
gpt4 key购买 nike

我在自定义的 UIView 初始化中使用了这段代码:

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
...

UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(frame.origin.x, frame.size.height, frame.size.width, 15)];
self.layer.masksToBounds = NO;
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOffset = CGSizeMake(0.0f, 4.0f);
self.layer.shadowOpacity = 0.5f;
self.layer.shadowPath = shadowPath.CGPath;
}
return self;
}

尝试像这样制作阴影:

1)

enter image description here

但是我得到了这个效果:

2)

enter image description here

你可以看到这是我想要实现的颠倒版本。如何制作第一张图片的阴影效果?

最佳答案

问题出在您的 shadowPath 上。

使用 CGRectMake(frame.origin.x, frame.size.height, frame.size.width, 15) 创建您的 UIBezierPath 将设置不正确的原点。

首先,origin.x 应该是 0.0f 否则如果您的 UIVieworigin 阴影会移得很远。 x != 0.0f。其次,您需要将 shadowPath 的底部与 UIView 的底部对齐。

这是 UIView 的屏幕截图,使用您的影子代码说明了这些问题。 (在下方的 UIView 中,您看不到阴影,因为它远离屏幕的右侧)。
Screenshot with incorrect shadowPath

如果将矩形更改为:

const CGFloat shadowRectHeight = 15.0f;
CGRect shadowRect = CGRectMake(0.0f, self.bounds.size.height - shadowRectHeight, self.bounds.size.width, shadowRectHeight)];

Screenshot with correct shadowPath

关于ios - 在 UIViews 上制作投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21668090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com