我试图围绕UITableView
的上角。但表视图未显示。这有什么不对?
// TableView设置
lazy var tableView: UITableView = {
let tv = UITableView()
tv.delegate = self
tv.dataSource = self
tv.separatorStyle = .none
tv.backgroundColor = .white
tv.layer.masksToBounds = true
tv.roundUpperCorners(radius: 12)
return tv
}()
//圆角上角。
func roundUpperCorners(radius: CGFloat) {
let maskPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: [.topLeft, .topRight], cornerRadii: CGSize(width: radius, height: radius))
let maskLayer = CAShapeLayer()
maskLayer.frame = self.bounds
maskLayer.path = maskPath.cgPath
self.layer.mask = maskLayer
}
答案 0 :(得分:1)
根据 @Fahri Azimov 评论,你应该设置你的表格视图的框架,首先评论他的评论。如果仍然面临问题,请使用以下代码。
从我的代码中
myTblView.clipsToBounds = true
myTblView.layer.cornerRadius = 10 // Set As you want
myTblView.layer.maskedCorners = [.layerMinXMinYCorner,.layerMaxXMinYCorner]
注意:您可以在官方文档中阅读iOS 11中的maskedCorners新内容。
答案 1 :(得分:1)
extension UIView {
func roundCorners(_ corners:UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
}}
yourView.roundCorners([.topLeft,.topRight], radius: 5)
答案 2 :(得分:1)
它正在发挥作用。感谢Fahri Azimov提到“在设置桌子框架后尝试绕过角落”。
我已将此行tableView.roundUpperCorners(radius: 12)
移至viewDidLayoutSubviews。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tableView.roundUpperCorners(radius: 12)
}