web-dev-qa-db-ja.com

Swift 3でこのUITableViewをクリア(透明)にする方法

これを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向けに適用する方法を教えてください。

16
RDowns

注:以下のコードはSwift 3でテストされています。

方法1:

storyboardからtableViewCellを選択し、Viewの下のAttributes Inspectorに移動しますBackgroundclearに変更します

方法2:cellForRowAt内の以下のコードを試してください

  cell.layer.backgroundColor = UIColor.clear.cgColor

enter image description here

注:上記の方法が機能しない場合は、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
}
46
Joe

これを試すことができます

viewDidLoad

tableView.backgroundColor = UIColor.clear

In cellForRowAt:

cell.contentView.backgroundColor = UIColor.clear

それは私の仕事です。

10
Eugene Lezov

テーブルとセルの両方の背景をクリアに設定する必要があります。

テーブルビュー関数内:

tableView.backgroundColor = .clear
cell.backgroundColor = .clear
tableView.tableFooterView = UIView()
7
antti-ka

最初の2つの答えは私にはうまくいきません。そのため、どこにでもクリアな背景を追加すると、白いbgは消えます。

cell.layer.backgroundColor = UIColor.clear.cgColor
cell.backgroundColor = .clear
tableView.layer.backgroundColor = UIColor.clear.cgColor
tableView.backgroundColor = .clear

Swift 4.2

5
El-Burritos

これが機能するには、新しいtableviewメソッドを実装する必要があります。

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell,
               forRowAt indexPath: IndexPath) {
    cell.backgroundColor = UIColor.clear
}
4

セルのcontentViewの背景色の設定がありません。

cell.contentView.backgroundColor = UIColor.clear

2
dlbuckley

たぶん、テーブルビューのアルファを確認できます。

1

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オペレータのバグだけではありません。

1
Cory Billeaud

Swift 3.動作していますを使用してテストしました

uiTableName.backgroundView = nil
uiTableName.backgroundColor = UIColor.clear
1
Thinesh

contentViewtableViewに_clear color_を適用していないため、これらを設定しても十分ではありません。 cellForRowAtIndexPathでこれを試してください

cell.contentView.backgroundColor = UIColor .clearColor()

1
Ahsan Ebrahim