У меня есть подкласс UICollectionViewCell
, и мне нужно обогнуть его углы и добавить тень. Ячейка выглядит как квадратная карта, и ячейки имеют достаточное пространство между ними.Невозможно установить тень на 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;
}
EDIT: Если я устанавливаю self.layer.masksToBounds
- NO
, тень работает, но верхние углы не круглые. Если я установил self.layer.masksToBounds
в YES
, тень не работает, но все четыре угла округлены. Я просто не могу понять, как обогнуть все четыре угла и заставить тень работать.
Есть ли причина, что вы пытаетесь создайте свой собственный «shadowPath» вместо того, чтобы позволить системе отслеживать слой? –
Вы пробовали shadowOffset? – Wain
@IanMacDonald Я только что нашел ответ «SO» ранее о том, как добавить тень, и вот как они это делают. – user3344977