[英]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.