UITableView的圆角上角

时间:2017-10-23 05:53:30

标签: ios uitableview

我试图围绕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
    }

3 个答案:

答案 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)
    }
相关问题