Подтвердить что ты не робот

UICollectionViewCell Border/Shadow

При создании iPad-приложения, как вы можете нарисовать границу вокруг UICollectionViewCell?

Подробнее: Я реализовал класс ProductCell, который расширяет UICollectionViewCell. Теперь я хотел бы присвоить некоторые причудливые детали, например. граница, тень и т.д. Однако при попытке использовать что-то вроде здесь, Xcode сообщает мне, что тип приемника "CALayer" является объявлением вперед.

4b9b3361

Ответ 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>