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)