UITableView的上angular

我正在尝试为UITableView上angular。 但是表格视图不显示。 这里有什么问题?

// 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 }() 

//圆形上angular

  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 } 

这是工作。 感谢Fahri Azimov提到“设置桌子框架之后试着绕过angular落”。

我把这行tableView.roundUpperCorners(radius: 12)到viewDidLayoutSubviews。

  override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() tableView.roundUpperCorners(radius: 12) } 

根据@Fahri Azimov的评论,你应该设置你的表格视图的框架,首先去看他的评论。 如果仍然面临问题,则使用下面的代码。

从我的代码中,

 myTblView.clipsToBounds = true myTblView.layer.cornerRadius = 10 // Set As you want myTblView.layer.maskedCorners = [.layerMinXMinYCorner,.layerMaxXMinYCorner] 

注: maskedCorners在iOS 11中新的,你可以从官方文档阅读。

 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)