2016-05-06 10 views
0

で常に白のUITableViewを作成私のサブビューのinitメソッド中に背景色。プログラムで、私は私のUITableViewは、私はコードで、私のカスタムビューのサブビューです<code>UITableView</code>を作成して設定するiOSの9</p> <p>で起動時に色を変更することができませんiOS9

myTableView.backgroundColor = UIColor.yellowColor() 

しかし、それは白くとどまった。

私>は、それがテーブルビュー自体ではなく白いテーブルビューのセルであることを確認するために、ビュー階層をキャプチャビューのデバッグを使用していました。 (しかし、私はちょうどその場合に限り、細胞をクリアするように設定しました)。

私は同様の問題(のようなthisthisthisthis newer one)について話古い記事をたくさん見てきたので、私は

myTableView.backgroundView = nil // or UIView() 

または

myTableView.backgroundView.backgroundColor = UIColor.clearColor() 

のようなものを試してみましたが、これらもうまくいきませんでした。

私は

myTableView.backgroundColor = UIColor.yellowColor() 

をしなかった場合はいつか(例えば、ボタンのタップ上の)元のレイアウトの後に、それは背景色を変更することを発見しました。

これは、すべてのiOS 9.3での唯一の問題です。 iOS 8.1と8.4のテストでは、initの間に背景色を設定することに問題はありませんでした。

は、私は試すことができます何かありますか?

+0

'メートルinit':

var customColor = UIColor.yellowColor() override func layoutSubviews() { super.layoutSubviews() self.backgroundColor = customColor } override func didMoveToWindow() { super.didMoveToWindow() self.backgroundColor = customColor } 

あなたはまた、UIViewControllerサブクラスでviewDidLoadまたはawakeFromNibメソッドを使用することができますエドードはUIプロパティを変更するのに適していません。 'layoutSubviews'メソッドに移動してみてください – redent84

+0

あなたのコードでこのtableViewを追加していますか?万一、viewDidLoad?その場合は、コードをviewWillAppearに移動し、initの代わりにinitWithFrameメソッドを使用します。 InitはNSObjectから派生しますが、initWithFrameはUIViewオブジェクトに特に使用されます。 –

+1

'awakeFromNib'に背景色を設定しようとしています – Bing

答えて

1

init方法は、ビュー階層がまだ構築されていないため、UIのプロパティを変更するには良い場所ではありません。

UIViewサブクラスのためlayoutSubviewsまたはdidMoveToWindowを使用してみてください:

override func viewDidLoad() { 
    super.viewDidLoad() 
    customTableView.backgroundColor = UIColor.yellowColor() 
} 

override func awakeFromNib() { 
    super.awakeFromNib() 
    customTableView.backgroundColor = UIColor.yellowColor() 
} 
1

は、他の人も経験しているバグのように見えます。回避策として、私はUIImageView(私が欲しかった色)を使用し、それをuitableviewの背景に割り当てました。それもあなたのために動作することを願っています!

tableView.backgroundView = UIImageView(image: UIImage(named: "yellowColorImage")) 
+0

はい、それもうまくいくと思います。 – Suragch

+0

お手伝い幸せです! – Harris

0

私は、これが最良の答えであることはよく分からないが、それは動作します。それはすぐに戻って設定されます白の背景を設定しているシステムであるものは何でも

dispatch_async(dispatch_get_main_queue()) { 
    self.myTableView.backgroundColor = UIColor.clearColor() 
} 

を:私は、initメソッドでこれを行うことにより、次回の実行ループまで色を設定遅れました。

関連する問題