Табличное представление Custom Cell Design проблема - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь создать пользовательскую ячейку таблицы, которая будет иметь закругленные углы и тень.Конечная цель - создать «карточный» внешний вид.Моя раскадровка ниже.Я создал отдельное представление для представления содержимого ячейки, чтобы можно было манипулировать этим представлением для получения желаемых эффектов.Проблема в том, что эффекты только влияют на верхнюю часть представления.Нижние углы и не закруглены, и вы также можете видеть, что границы окружают весь вид.Я также включил пользовательский файл класса ячейки.Любые идеи о том, как сделать так, чтобы у остального вида были закругленные углы и границы?

class EventTableCell: UITableViewCell {

@IBOutlet weak var collectionView: UIView!
@IBOutlet weak var address: UILabel!
@IBOutlet weak var statusImage: UIImageView!
@IBOutlet weak var customerName: UILabel!
@IBOutlet weak var customerTime: UILabel!
override func awakeFromNib() {
    super.awakeFromNib()
    //collectionView.backgroundColor = UIColor.gray
    collectionView.clipsToBounds = false
    collectionView.layer.cornerRadius = 10
    collectionView.layer.borderWidth = 1
    collectionView.layer.borderColor = UIColor.gray.cgColor
    collectionView.layer.shadowColor = UIColor.lightGray.cgColor
    collectionView.layer.shadowOpacity = 1
    collectionView.layer.shadowOffset = CGSize.zero
    collectionView.layer.shadowRadius = 3
   }
 }

Снимок экрана UiTableview в основной раскадровке:

Screen Shot

Снимок экрана:

Screen Shot

Ответы [ 4 ]

0 голосов
/ 05 декабря 2018

Вы можете добавить следующий метод, где размер будет вашим предпочтением, и установить делегата «UICollectionViewDelegateFlowLayout» вашему классу.

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
    let cellSize = CGSize(width: 100, height: 100)
    return cellSize
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat
{
    return 10
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
{
    let sectionInset = UIEdgeInsetsMake(10, 10, 10, 10)
    return sectionInset
}

Применяя этот метод, вы сможете отобразить ячейку надлежащим образом, в настоящее время ваш размер равенячейка превышена по сравнению с размером по умолчанию, так что это происходит, так как реализация метода size удалит высоту по умолчанию и заменит запрашиваемый размер ячейки.

Надеюсь, это решит вашу проблему.

0 голосов
/ 05 декабря 2018

Используйте этот метод:

extension UIView {

func addShadow(offset: CGSize, color: UIColor, radius: CGFloat, opacity: Float) {
    layer.masksToBounds = false
    layer.shadowOffset = offset
    layer.shadowColor = color.cgColor
    layer.shadowRadius = radius
    layer.shadowOpacity = opacity

    let backgroundCGColor = backgroundColor?.cgColor
    backgroundColor = nil
    layer.backgroundColor =  backgroundCGColor
   }
}

Вызовите этот метод следующим образом:

view.addShadow(offset: CGSize(width: 5, height: 5), color: .lightGray, radius: 5, opacity: 0.5)

Вы можете вызвать этот метод в методе 'awakeFromNib' tableCell.

Примечание: укажите правильную высоту строки таблицы.

0 голосов
/ 05 декабря 2018

Сохранение некоторого отступа по всем сторонам между ячейками contentView и containerView (* из вашего прикрепленного изображения) для видимой тени со всех сторон.

0 голосов
/ 05 декабря 2018

Если ваши подпредставления ограничений UICollectionView правильные, задайте автоматическое измерение высоты в heightForRowAt и оценкаHeightForRowAt в методах делегата UITableView и перезагрузите UICollectionView после начала рендеринга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...