在UIView中创建内部阴影

ale*_*ngn 12 xcode objective-c ipad ios

我想在我UIView的iPad 上创建一个内部阴影:

UIView带阴影

UIView可能会改变大小,所以我无法使用简单的图像来创建这种阴影.

我已经测试了setShadow等,但它只是一个创建的阴影.

知道怎么创造这种影子吗?

小智 9

您可能会发现它很有用,我为此制作了UIView类别

https://github.com/Seitk/UIView-Shadow-Maker


Nic*_*ood 6

将阴影创建为特定大小的透明图层,然后创建可伸缩图像,如下所示:

UIImage *shadowImage = [UIImage imageNamed:@"shadow.png"];
shadowImage = [shadowImage stretchableImageWithLeftCapWidth:floorf(shadowImage.size.width/2) topCapHeight:floorf(shadowImage.size.height/2)];
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其作为图像放在UIImageView中,并使用contentMode缩放以适应它,它将以您希望的方式工作.

让我们说你的视图叫做"myView".您可以像这样添加阴影:

UIImageView *shadowImageView = [[UIImageView alloc] initWithImage:shadowImage];
shadowImageView.contentMode = UIViewContentModeScaleToFill;
shadowImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
shadowImageView.frame = myView.bounds;
[myView addSubview:shadowImageView];
[shadowImageView release]; // only needed if you aren't using ARC
Run Code Online (Sandbox Code Playgroud)

如果您愿意,也可以在界面构建器中执行大部分操作,只要您在代码中创建可伸展图像本身即可.