2016-10-23 30 views
0

テーブルセル内のビューの下部と左上に丸い角をいくつか適用したいとします。そして、私はUIViewにこの拡張機能を作っ:設定する場所UITableViewCell内のUIRectCorner

extension UIView { 
    func round(_ corners: UIRectCorner, radius: CGFloat) { 
     let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) 
     let mask = CAShapeLayer() 
     mask.path = path.cgPath 
     self.layer.mask = mask 
    } 
} 

しかし、私はそれを正しく表示するには、私の見解でこれをコールする場所を正確に確認していません。今私はそれを私のカスタムセルのlayoutSubviews()で呼び出されているが、私のアプリを起動すると、左下の部分は円形ではなく、セルが画面外に出て再描画された後でしかない。

UITableViewCellの中に丸い角を設定するには、どのような場所が良いでしょうか?

編集:ここでは

が階層とスクリーンショットです: enter image description here

コード:

override func layoutSubviews() { 
    super.layoutSubviews() 

    configureView() 
} 

func configureView() { 
    bgView.layer.cornerRadius = 3.0 
    period.round([.bottomLeft, .topLeft], radius: 3.0) 
    bgView.layer.masksToBounds = false 
    period.layer.masksToBounds = false 
    bgView.layer.shadowColor = UIColor.black.withAlphaComponent(0.2).cgColor 
    bgView.layer.shadowOffset = CGSize(width: 0, height: 0) 
    bgView.layer.shadowOpacity = 0.8 
} 

編集2:

enter image description here

+0

私は単に層自体のcornerRadiusを設定するのではなく、使用しますCAShapeLayer。 – fishinear

+0

丸みを帯びたいコーナーを選ぶには? – Kobe

+0

ああ、私はすべてのコーナーを丸くしたいと思っていました。 – fishinear

答えて

1

これは私ですクラス

import UIKit 

class CustomTableViewCell: UITableViewCell { 

    @IBOutlet weak var period: UIView! 
    @IBOutlet weak var bgView: UIView! 
    override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 
     bgView.layer.cornerRadius = 5.0 

     // you might not be doing this earlier 
     bgView.clipsToBounds = true 

     period.round([.bottomLeft,.topLeft], radius: 5.0) 

    } 

    override func setSelected(_ selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 
    } 

} 

私のテーブルビューのデータソースメソッド

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 20 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomTableViewCell") as! CustomTableViewCell 
    return cell 
} 

enter image description here

マイビュー階層

enter image description here

+0

私のセルは背景ビューを持っていて、これはすべての丸いコーナーを持っていて、このバックグラウンドビューは、左側のビューがバックグラウンドビューのために左の丸いコーナーを隠しています。私は左の部分(上と下)だけに丸いコーナーを持たせたいと思う。 – Kobe

+0

@Kobe親の子ビューが複数ある場合は、最終出力を正確に共有できますか?また、複数の親子ビューがある場合は 'clipSubviews'プロパティを覚えてください –

+0

新しいスクリーンショットを追加しました。ここで、底部が丸い角のみを持つように更新されていません上部。下にスクロールしてセルが画面外に出ると、これは変化します。次に、角が丸くなります。 – Kobe

関連する問題