2017-02-07 7 views
0

影を追加しようとしています。UITableViewCellはすべてうまくいきますが、テーブルビューをスクロールするとセルの影がオンとオンになり、影が太くなります。ここに私のコードは次のとおりです。セルはスクロール中に余分な影を適用します

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

     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! DriverCell 


     //Create space between cells 
     cell.contentView.backgroundColor = UIColor(red:0.88, green:0.94, blue:0.99, alpha:1.00) 
     let whiteRoundedView : UIView = UIView(frame: CGRect(x:8, y:10, width: self.view.frame.size.width - 15 , height:150)) 
     whiteRoundedView.layer.backgroundColor = CGColor(colorSpace: CGColorSpaceCreateDeviceRGB(), components: [1.0, 1.0, 1.0, 1.0]) 
     whiteRoundedView.layer.masksToBounds = false 
     whiteRoundedView.layer.cornerRadius = 9.0 
     whiteRoundedView.layer.shadowOffset = CGSize(width: 0, height: 0) 
     whiteRoundedView.layer.shadowRadius = 1.5 
     whiteRoundedView.layer.shadowOpacity = 0.2 
     whiteRoundedView.clipsToBounds = false 
     cell.contentView.addSubview(whiteRoundedView) 
     cell.contentView.sendSubview(toBack: whiteRoundedView) 


     return cell 
    } 
  1. デフォルト影
  2. エキストラ影が

enter image description here

答えて

1

を適用AのUITableViewCellは、再利用可能な図です。これは、スクロールするときにcellForRowが呼び出されるため、ある時点で影がビューに再び適用されることを意味します。

例えば:ビューA、B、Cは、あなたは下へスクロールして表示するAが非表示になると、再利用されますと影があなたのケースでは、ビューA.

のために再度作成されます表示、画面上に表示されています

class DriverCell: UITableViewCell { 

override init(frame: CGRect) { 
    super.init(frame: frame) 

    contentView.backgroundColor = UIColor(red:0.88, green:0.94, blue:0.99, alpha:1.00) 
    let whiteRoundedView : UIView = UIView(frame: CGRect(x:8, y:10, width: frame.size.width - 15 , height:150)) 
    whiteRoundedView.layer.backgroundColor = CGColor(colorSpace: CGColorSpaceCreateDeviceRGB(), components: [1.0, 1.0, 1.0, 1.0]) 
    whiteRoundedView.layer.masksToBounds = false 
    whiteRoundedView.layer.cornerRadius = 9.0 
    whiteRoundedView.layer.shadowOffset = CGSize(width: 0, height: 0) 
    whiteRoundedView.layer.shadowRadius = 1.5 
    whiteRoundedView.layer.shadowOpacity = 0.2 
    whiteRoundedView.clipsToBounds = false 
    contentView.addSubview(whiteRoundedView) 
    contentView.sendSubview(toBack: whiteRoundedView) 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

} 

影はビューが初期化されます際に引き込まれ、二度と

+0

おかげで後のことになる。この方法:私はこのような初期化に影を追加するDriverCellあなたにお勧めします! 'awakeFromNib'は正しい解決策を無駄にします。 –

関連する問題