簡體   English   中英

UITableView的圓角

[英]Round upper corners for 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
    }

根據@Fahri Azimov的評論,您應該設置表格視圖的框架,首先使用他的評論。 如果仍然面臨問題,請使用以下代碼。

根據我的代碼,

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

注意:iOS 11中新增的maskedCorners可以從官方文檔中閱讀。

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)

這是工作。 感謝Fahri Azimov提到“在設置桌子框架后嘗試將拐角弄圓”。

我將這一行tableView.roundUpperCorners(radius: 12)移到viewDidLayoutSubviews中。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM