2 UITableViewCell 中 UIView 的圆角不起作用
2 Round Corners of a UIView in UITableViewCell not working
我正在尝试在自定义 TableViewCell 中为 UIView 创建圆角。问题是当 table 视图加载时,它只围绕视图的左上角而不是底部。现在,当我稍微滚动 table 视图时,它也会使视图的左下角变圆。
我已经尝试了所有可能的方法,但我无法理解它。我还附上了屏幕截图以及复制代码。谢谢
我在自定义视图单元格 class 中使用的代码如下。
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
}
}
您的 'corner rounding' 代码运行良好,问题是您的 UIView
的底边超出了 Cell
的底边。减少你的 UIView
的 Y
位置,它将被你的 Cell
覆盖。我也看到你的单元格的分隔线不可见,这意味着你应该在 heightForRowAtIndexPath:
处为你的单元格提供更大的高度
你说它在滚动时工作得很好,我想它在向下滚动时工作,而在滚动到顶部时不工作。这意味着您的第一个单元格在第二个单元格滚动到底部时被重新绘制(第二个单元格不覆盖您的第一个单元格),反之亦然,同时滚动到顶部(第二个单元格覆盖您的第一个单元格)
我正在尝试在自定义 TableViewCell 中为 UIView 创建圆角。问题是当 table 视图加载时,它只围绕视图的左上角而不是底部。现在,当我稍微滚动 table 视图时,它也会使视图的左下角变圆。
我已经尝试了所有可能的方法,但我无法理解它。我还附上了屏幕截图以及复制代码。谢谢
我在自定义视图单元格 class 中使用的代码如下。
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
}
}
您的 'corner rounding' 代码运行良好,问题是您的 UIView
的底边超出了 Cell
的底边。减少你的 UIView
的 Y
位置,它将被你的 Cell
覆盖。我也看到你的单元格的分隔线不可见,这意味着你应该在 heightForRowAtIndexPath:
你说它在滚动时工作得很好,我想它在向下滚动时工作,而在滚动到顶部时不工作。这意味着您的第一个单元格在第二个单元格滚动到底部时被重新绘制(第二个单元格不覆盖您的第一个单元格),反之亦然,同时滚动到顶部(第二个单元格覆盖您的第一个单元格)