2017-10-23 12 views
0

UITableViewの上部コーナーを丸めようとしています。しかし、テーブルビューは表示されません。ここで何が間違っていますか?UITableViewのラウンド上部コーナー

//テーブルビューの設定

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

//ラウンド上隅。 @Fahri Azimovコメントを1として

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 
    } 
+2

コーナーを丸めようとしているときに、テーブルのフレームを設定していません。テーブルの枠を設定した後、角を丸くしてください。 –

+0

私は制約を設定しています。上、下、左と右を固定します。 – Rains

答えて

1

それは働いています。 Fahri Azimovに感謝します。「テーブルの枠を設定した後にコーナーを丸めるようにしてください。」

私はこの行をviewDidLayoutSubviewsに移動しました。tableView.roundUpperCorners(radius: 12)

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

あなたは、あなたのテーブルビューの枠を設定する最初の彼のコメントで行く必要があります。依然として問題がある場合は、以下のコードを使用してください。私のコードから

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

注:公式の文書から読み取ることができますiOSの11でmaskedCorners新しいです。

+0

'maskedCorners'プロパティとは何ですか?それはある種の拡張ですか?そのような場合は、コードを提供するか、コードが含まれているライブラリへの参照を役立てる必要があります。 –

+0

https://developer.apple.com/documentation/quartzcore/cacornermask?utm_source=Little%20Bites%20of%20Cocoa&utm_campaign=5e8e3ea5c8-EMAIL_CAMPAIGN_2017_06_16&utm_medium=email&utm_term=0_2b6df83b4b-5e8e3ea5c8-114264253 – iPatel

+0

を見てください@FahriAzimovは使用を定義することが可能である。この'maskedCorners'の、apple apiのドキュメントには定義がありません –

0
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)

+0

彼はすでにこれをやっています。 –

+0

あなたの答えは何ですか? –

関連する問題