2016-03-25 11 views
0

セルの左半分を緑色に、右半分を赤色に色付けしようとしています。コメントする前にcell.frame.widthコードスニペットHEREをチェックしてください。後ろに空白があることがわかります。私の推測では、cell.frameは私に必要な正しいフレームを与えていないということです。iOSテーブルビューのセルで行全体の幅を取得する方法

同じ結果を達成するための助けや他のアプローチは非常に感謝しています!

UPDATE:テーブルビューとcontraints Here

+0

try cell.contentView.frame.size.width。 –

+0

でした。これは 'cell.frame.size.width'と同じです – DDR

答えて

1

より良い利用の自動レイアウトが、それは両方の向きで動作するアプリケーションを作成します。

また、実装では、セルごとにcellForRowAtIndexPathメソッドが呼び出されるたびにbgViewが作成されるため、bgViewがbgViewを作成するだけでなくnilであるかどうかをよく確認してください。 以下のコードを参照してください。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("CellID", forIndexPath: indexPath) 

    cell.backgroundColor = UIColor.clearColor() 

    if cell.backgroundView == nil { 

     let leftView = UIView() 
     let rightView = UIView() 
     rightView.backgroundColor = UIColor.redColor() 
     leftView.backgroundColor = UIColor.yellowColor() 
     cell.backgroundView = UIView() 
     cell.backgroundView?.addSubview(leftView) 
     cell.backgroundView?.addSubview(rightView) 
     leftView.translatesAutoresizingMaskIntoConstraints = false; 
     rightView.translatesAutoresizingMaskIntoConstraints = false; 

     let viewDict = ["leftView":leftView, "rightView":rightView] 

     cell.backgroundView!.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[leftView]-0-|", options: [], metrics: nil, views: viewDict)) 
     cell.backgroundView!.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[rightView]-0-|", options: [], metrics: nil, views: viewDict)) 

     cell.backgroundView!.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[leftView]-0-[rightView(==leftView)]-0-|", options: [], metrics: nil, views: viewDict)) 

    } 

    cell.textLabel?.text = "dsfsdkjfh fkjhsdkjfhs kdfksdhfk sdf"; 
    return cell 

} 
+0

ありがとうございます。魅力のように働く。私がaddsubviewの後に失われたにもかかわらず... LOLしかし、私はちょうどそれをコピーして貼り付けます。 – DDR

0

これは、多くの理由があります。カップルの事あなたは試みることができる:

cell.accessoryType = .None 

むしろより:セルは、などのチェックマーク、矢印、.Noneにセルの付属品の種類を設定してみてくださいなどのアクセサリビューのための部屋を作ることも

を右側のビューを追加し、代わりにセルの背景色を設定してみてください、そして左側を設定すると、/ 2

をview.widthする
cell.backgroundColor = UIColor.redColor 
let leftViewFrame = cell.bounds 
leftViewFrame.width = view.frame.width/2.0 
let leftView = UIView(frame: leftViewFrame) 

別の潜在的な問題は、のviewDidLoadでこれを解決することができます:

self.automaticallyAdjustsScrollViewInsets = false 
+0

ちょうどビューを作成し、2の代わりにそれを追加する上で良いキャッチ。あなたのやり方に従うと、細胞のバックグラウンドが全体的に変化するため、末尾の空白は消えてしまいます。しかし、緑色の部分のサイズはまだ同じです。 – DDR

+0

奇妙な...私は私の答えに別の潜在的な修正を加えました、あなたは確かにビューのサイズは何らかの理由で変更されていませんか?あなたは潜在的にこれをテストすることができますviewDidAppearでtableviewを再読み込み – PeejWeej

関連する問題