Итак, я уже просмотрел различные сообщения о добавлении второго вида для добавления тени, но я все еще не могу заставить его работать, если я хочу добавить его UICollectionViewCell
. Я создал подклассы UICollectionViewCell
, и вот мой код, в котором я добавляю различные элементы пользовательского интерфейса в представление содержимого ячейки и добавляю тень к слою:
[self.contentView setBackgroundColor:[UIColor whiteColor]];
self.layer.masksToBounds = NO;
self.layer.shadowOffset = CGSizeMake(0, 1);
self.layer.shadowRadius = 1.0;
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOpacity = 0.5;
[self.layer setShadowPath:[[UIBezierPath bezierPathWithRect:self.bounds] CGPath]];
Я хотел бы знать, как добавить закругленный угол и тень UICollectionViewCell
.
iphone
ios
uicollectionviewcell
Винсент Ю
источник
источник
Ответы:
Ни одно из этих решений не помогло мне. Если вы поместите все свои подпредставления в представление содержимого UICollectionViewCell, что вы, вероятно, и есть, вы можете установить тень на слое ячейки и границу на слое contentView для достижения обоих результатов.
Swift 3.0
источник
cell.layer.backgroundColor = [UIColor clearColor].CGColor;
Версия Swift 3:
источник
На случай, если это поможет: вот быстрый способ скругления углов:
где ячейка является переменной, управляющей ячейкой: часто вы будете использовать это в
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
Наслаждайтесь!
источник
Вот решение Swift 4 , обновленное, чтобы скруглить все углы, а не только верхние углы:
источник
Установите
layer
атрибуты для ячейки, а неcontentView
.источник
SWIFT 4.2
Следует добавить это в свою настраиваемую ячейку или cellForItemAt: если вы используете cellForItemAt: подход, замените себя -> ячейка
Это даст вам ячейку с закругленной рамкой и тенью.
источник
Вот мой ответ, близкий к другим, но я добавляю к слою радиус угла, иначе углы не будут правильно заполнены. Кроме того, это неплохое небольшое расширение
UICollectionViewCell
.}
Вы можете вызвать его
collectionView(_:cellForItemAt:)
из источника данных, как только вы удалите свою ячейку из очереди.источник
Вам просто нужно (a) установить
cornerRadius
и (b) установитьshadowPath
закругленный прямоугольник с тем же радиусом, что иcornerRadius
:источник
Пришлось внести небольшие изменения в Swift :
источник
Ответ Майка Сабатини работает нормально, если вы настраиваете свойства ячейки непосредственно в collectionView cellForItemAt, но если вы попытаетесь установить их в awakeFromNib () пользовательского подкласса UICollectionViewCell, вы закончите с неправильным bezierPath, установленным на устройствах, которые не не соответствуют ширине и высоте, ранее установленным в вашей раскадровке (IB).
Решением для меня было создать функцию внутри подкласса UICollectionViewCell и вызвать ее из cellForItemAt следующим образом:
И в CustomCollectionViewCell.swift:
источник
Это сработало для меня
источник
Я использую следующий метод для достижения такого эффекта:
источник
Вы можете установить цвет тени, радиус и смещение в методе UICollectionViewDataSource при создании UICollectionViewCell
источник
Вот мой взгляд на решение. Он похож на другие ответы, с одним ключевым отличием. Он не создает путь, который зависит от границ представления. Каждый раз, когда вы создаете путь, основанный на границах, и предоставляете его слою, вы можете столкнуться с проблемами при изменении его размера, и вам потребуется настроить методы для обновления пути.
Более простое решение - избегать использования всего, что зависит от границ.
Теперь, когда размер ячеек изменится, API представления выполнит всю внутреннюю работу.
источник
Я обнаружил важную вещь: UICollectionViewCell должен иметь backgroundColor в качестве
clear
цвета, чтобы они работали выше.источник