我有一个UICollectionViewCell子类,我需要绕其角并添加阴影.该单元看起来像一张方形卡,单元格之间有足够的空间.
因此,在每个单元格"下面",我想添加一些阴影.我可以成功地做到这一点,但后来我的手机底部只有圆角.顶部只有正常的角落.我需要所有四个角的圆角.
我已经在这里找到了解决方案UIViews,建议添加一个单独UIView的subview,但我更愿意出于性能原因避免这种情况.
我找到了一个使用此方法的解决方案,您可以在我的代码中找到:
[UIBezierPath bezierPathWithRoundedRect: cornerRadius:]
但这对我来说也不起作用.是否有可能它不适合我,因为我试图只在单元格的底部添加阴影"下面"?似乎大多数这些答案都是针对开发人员想要在整个单元格周围添加阴影的问题提供的.
我想我愿意为subview我的UICollectionViewCell子类添加一个特殊的,但我想将它作为最后的手段.
我的目标iOS 7+和使用Xcode 6.1.1.
这是我在UICollectionViewCell子类中使用的代码,用于尝试实现阴影和圆角:
- (void)load:(CustomUserObject *)customObject
{
self.customObject = customObject;
// Round cell corners
self.layer.cornerRadius = 12;
// Add shadow
self.layer.masksToBounds = NO;
self.layer.shadowOpacity = 0.75f;
self.layer.shadowRadius = 10.0f;
self.layer.shouldRasterize = NO;
self.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(self.frame.size.width/2 - (self.frame.size.width - 50)/2, self.frame.size.height, self.frame.size.width - 50, 10) cornerRadius:self.layer.cornerRadius].CGPath;
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果我设置self.layer.masksToBounds到NO,影子工程,但顶角不圆.如果我设置self.layer.masksToBounds …
在 Apple 文档中,他们为您提供了如何将 NSBezierPath 转换为 CGPathRef 的代码。我需要反过来转换,从 CGPathRef 到 NSBezierPath。UIBezierPath 有一个名为 cgPath 的属性,所以如果我在 iPhone 上工作那不会有问题,但我在 MacOS 上工作。
这一定是一个老问题,我肯定会在互联网上找到答案,但没有运气。可能是我错过了什么。任何帮助表示赞赏。