これをUITableView
にするにはどうすればSwift 3。
私は以前のスレッドを通過しましたが、まだ白い背景を得ています。
あなたのコードからわかるように、私は言及されたさまざまな方法を試しました:
override func viewDidLoad() {
self.communitiesTableView.delegate = self
self.communitiesTableView.dataSource = self
let background = CAGradientLayer().bespokeColor()
background.frame = self.view.bounds
// view.addSubview(background)
super.viewDidLoad()
// Do any additional setup after loading the view.
}
そして私のセルテーブル関数で:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let title = self.communities[indexPath.row]
let cell = UITableViewCell()
cell.textLabel?.text = title
cell.textLabel?.font = UIFont(name: "Avenir", size: 12)
cell.textLabel?.textColor = UIColor.red
cell.textLabel?.backgroundColor = UIColor.clear
cell.contentView.backgroundColor = UIColor.clear
communitiesTableView.backgroundColor = UIColor.clear
cell.layer.backgroundColor = UIColor.clear.cgColor
return cell
}
このgifは問題を示しています-テーブルを示す黒い線が存在しないことに注意してください(誰もログインしていないため)
しかし、一瞬それは明らかで、その後白に変わります。どこがおかしいの?
これは私が見つけた別の投稿からです:
Appleの文書によると
... iOS 7では、セルのデフォルトの背景は白です。 iOSの以前のバージョンでは、セルは囲んでいるテーブルビューの背景色を継承します。セルの背景色を変更する場合は、Table ViewデリゲートのtableView:willDisplayCell:forRowAtIndexPath:メソッドで変更します。
テーブルビューの背景を透明にするには、willDisplayCell UITableViewデリゲートメソッドを使用する必要がある場合があります。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cellforRowAtIndexPath:(NSIndexPath *)indexPath
{
[cell setBackgroundColor:[UIColor clearColor]];
}
上記のコードをiOS 7向けに適用する方法を教えてください。
注:以下のコードはSwift 3
でテストされています。
方法1:
storyboard
からtableViewCellを選択し、View
の下のAttributes Inspector
に移動しますBackground
をclear
に変更します
方法2:cellForRowAt
内の以下のコードを試してください
cell.layer.backgroundColor = UIColor.clear.cgColor
注:上記の方法が機能しない場合は、shift + option + command + k
を押してプロジェクトのビルドをクリアしてください。
更新:以下のコードからcellForRowAt
を更新...
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath)
cell.textLabel?.text = communities[indexPath.row]
cell.textLabel?.font = UIFont(name: "Avenir", size: 12)
cell.textLabel?.textColor = UIColor.red // set to any colour
cell.layer.backgroundColor = UIColor.clear.cgColor
return cell
}
これを試すことができます
viewDidLoad:
tableView.backgroundColor = UIColor.clear
In cellForRowAt:
cell.contentView.backgroundColor = UIColor.clear
それは私の仕事です。
テーブルとセルの両方の背景をクリアに設定する必要があります。
テーブルビュー関数内:
tableView.backgroundColor = .clear
cell.backgroundColor = .clear
tableView.tableFooterView = UIView()
最初の2つの答えは私にはうまくいきません。そのため、どこにでもクリアな背景を追加すると、白いbgは消えます。
cell.layer.backgroundColor = UIColor.clear.cgColor
cell.backgroundColor = .clear
tableView.layer.backgroundColor = UIColor.clear.cgColor
tableView.backgroundColor = .clear
Swift 4.2
これが機能するには、新しいtableviewメソッドを実装する必要があります。
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell,
forRowAt indexPath: IndexPath) {
cell.backgroundColor = UIColor.clear
}
セルのcontentViewの背景色の設定がありません。
cell.contentView.backgroundColor = UIColor.clear
たぶん、テーブルビューのアルファを確認できます。
Identity Inspectorで、ドロップダウンメニューでカスタムクラス->クラス「YourCustomClassCellName」が選択されていることを確認します。 Interface BuilderでUITableViewCellを選択した状態で、識別子が "YourCellName"であることを確認し、次にcell.backgroundColor = UIColor.clear iを持つ戻りセルの前のfunc tableView(_ tableViewL UITableView、cellForRowAt)メソッドで確認します。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "YourCellName", for: indexPath) as? YourCellNameClass {
cell.configureCell(parameter: ClassDataModel[indexPath.row])
cell.backgroundColor = UIColor.clear
return cell
} else {
return UITableViewCell()
}
私は同じ問題を抱えており、CellInstanceが選択され、このインスタンスではなく別のviewControllerで機能する理由を1時間費やしたときに顔が手のひらになっていることを確認する前にすべてのコードを書いた。 IBを使用してデフォルトの白い背景をクリアしても、cell.backgroundColor = UIColor.clearを記述する必要があります。 8.2.1で別のバグを見つけましたが、iD10tオペレータのバグだけではありません。
Swift 3.動作していますを使用してテストしました
uiTableName.backgroundView = nil
uiTableName.backgroundColor = UIColor.clear
contentView
のtableView
に_clear color
_を適用していないため、これらを設定しても十分ではありません。 cellForRowAtIndexPathでこれを試してください
cell.contentView.backgroundColor = UIColor .clearColor()