UICollectionViewCell Border/Shadow
При создании iPad-приложения, как вы можете нарисовать границу вокруг UICollectionViewCell?
Подробнее: Я реализовал класс ProductCell, который расширяет UICollectionViewCell. Теперь я хотел бы присвоить некоторые причудливые детали, например. граница, тень и т.д. Однако при попытке использовать что-то вроде здесь, Xcode сообщает мне, что тип приемника "CALayer" является объявлением вперед.
Ответы
Ответ 1
Только для немного большей реализации:
#import <QuartzCore/QuartzCore.h>
в вашем .m
Убедитесь, что ваш класс реализует
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
так как здесь устанавливается ячейка.
Затем вы можете изменить cell.layer.background
(доступно только после импорта кварца)
См. ниже
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MyCollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"pressieCell" forIndexPath:indexPath];
//other cell setup here
cell.layer.borderWidth=1.0f;
cell.layer.borderColor=[UIColor blueColor].CGColor;
return cell;
}
Ответ 2
Swift
Обновлен для Swift 3
Предполагая, что у вас есть Collection View с необходимыми методами, вы можете просто написать несколько строк кода, чтобы добавить границу.
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell
cell.myLabel.text = self.items[indexPath.item]
cell.backgroundColor = UIColor.cyan
// add a border
cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 8 // optional
return cell
}
Примечания
- Нет необходимости импортировать
QuartzCore
в Swift, если вы уже импортировали UIKit
.
- Если вы также хотите добавить тень, см. этот ответ.
Ответ 3
Вам нужно включить фреймворк QuartzCore
и импортировать заголовок в свой класс:
#import <QuartzCore/QuartzCore.h>