Ios 表视图自定义单元格设计问题

Ios 表视图自定义单元格设计问题,ios,swift,uitableview,uiview,Ios,Swift,Uitableview,Uiview,我正在尝试创建一个自定义表格单元格,该单元格将具有圆角和阴影。最终目标是创建一个卡片的外观和感觉。下面是我的故事板设置。我在单元格的内容视图上创建了一个单独的视图,以便可以操纵该视图以获得所需的效果。问题是效果似乎只影响视图的顶部。底部的角并不是圆形的,您还可以看到边框围绕着整个视图。我还包括了自定义单元类文件。关于如何使视图的其余部分具有圆角和边框,有什么想法吗 class EventTableCell: UITableViewCell { @IBOutlet weak var collec

我正在尝试创建一个自定义表格单元格,该单元格将具有圆角和阴影。最终目标是创建一个卡片的外观和感觉。下面是我的故事板设置。我在单元格的内容视图上创建了一个单独的视图,以便可以操纵该视图以获得所需的效果。问题是效果似乎只影响视图的顶部。底部的角并不是圆形的,您还可以看到边框围绕着整个视图。我还包括了自定义单元类文件。关于如何使视图的其余部分具有圆角和边框,有什么想法吗

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的屏幕截图:

输出屏幕截图:


如果UICollectionView约束的子视图正确,则在UITableView委托方法中以heightForRowAt和estimatedHeightForRowAt设置高度自动标注,并在开始渲染后重新加载UICollectionView。

使用此方法:

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)
您可以在tableCell的方法“awakeFromNib”中调用此方法


注意:还要为表格行指定适当的高度。

在单元格contentView和containerView*之间的所有边上保留一些填充,从附加图像到所有边上的可见阴影。

您可以添加以下方法,其中大小将是您的首选项,并将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
}
通过应用这些方法,您可以以正确的方式显示单元格,当前您的单元格大小超过了默认大小。因此,通过实施大小方法,将删除默认高度并替换为您请求的单元格大小


希望这能解决您的问题。

tableview的行高是多少?还有,collectionView的高度是多少?请尝试设置行之间的垂直间距。e、 g参见。请检查我的答案并尝试实现建议的方法。单元格为113,集合视图为91。我还必须在tableview委托中将表格高度手动设置为113。谢谢如果使用情节提要,可以从情节提要中指定行高度。无需使用“heightForRow”方法