【问题标题】:2 Round Corners of a UIView in UITableViewCell not working2 UITableViewCell 中 UIView 的圆角不起作用
【发布时间】:2021-09-09 13:00:00
【问题描述】:

我正在尝试使用自定义 TableViewCell 为 UIView 创建圆角。问题是当表格视图加载时,它只围绕视图的左上角而不是底部。现在,当我稍微滚动表格视图时,它也会将视图的左下方部分舍入。

我已经尝试了所有可能的方法,但我无法理解它。我还附上了屏幕截图以及复制代码。谢谢

我在自定义视图单元类中使用的代码如下。

class FoodTVCell: UITableViewCell {

var food: Food!

@IBOutlet weak var foodPicture: UIImageView!
@IBOutlet weak var foodName: UILabel!
@IBOutlet weak var foodRating: UIImageView!
@IBOutlet weak var deliveryTime: UILabel!
@IBOutlet weak var minOrder: UILabel!
@IBOutlet weak var category: UILabel!
@IBOutlet weak var foodPriceLabelBG: UIView!
@IBOutlet weak var foodPrice: UILabel!


   override func awakeFromNib() {
    super.awakeFromNib()
    foodPicture.layer.cornerRadius = 75/2
    foodPicture.clipsToBounds = true

}


override func layoutSubviews() {
    super.layoutSubviews()

    let maskLayer = CAShapeLayer()
    let corners = UIRectCorner.TopLeft.union(UIRectCorner.BottomLeft)
    maskLayer.path = UIBezierPath(roundedRect: foodPriceLabelBG.bounds, byRoundingCorners: corners, cornerRadii: CGSizeMake(20.0, 20.0)).CGPath
    foodPriceLabelBG.layer.mask = maskLayer
    foodPriceLabelBG.clipsToBounds = true
}

}

【问题讨论】:

    标签: ios swift uitableview rounded-corners


    【解决方案1】:

    您的 '圆角' 代码运行良好,问题是您的 UIView 的底边超出了您的 Cell 的底边。减少您的UIViewY 位置,它将被您的Cell 覆盖。我也看到您的单元格的分隔线不可见,这意味着您应该在 heightForRowAtIndexPath: 处为您的单元格提供更大的高度

    你说它在滚动时工作得很好,我想它在向下滚动时工作而在滚动到顶部时不工作。这意味着您的第一个单元格在滚动到底部(第二个单元格不覆盖您的第一个单元格)时在第二个之后重绘,反之亦然,同时滚动到顶部(第二个单元格覆盖您的第一个单元格)

    【讨论】:

    • 感谢您的评论。实际上这是细胞的高度问题。我只是将它从 130 增加到 132,它就像一个魅力。糟糕的是,我在来这里之前没想到这一点 :) UIView 也没有超出故事板中 Cell 的底部边缘。对于“单元格的分隔线”,它实际上是可见的,但我截取了屏幕截图,所以它不可见。我所说的滚动的意思是,如果我什至将它移动 1px,单元格就会被重绘并且底角显示 OK。无论如何感谢您指出问题。
    猜你喜欢
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    相关资源
    最近更新 更多