How do I make this UITableView
and it's cells clear in Swift 3.
I have gone through the previous threads but I am still getting a white background.
As you can see from my code I have tried the various methods mentioned:
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.
}
and in my cell table function:
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
}
This gif shows the problem - notice the black lines showing the table is present just not populated (as no-one is logged in)
But for a second it is clear, then turns white. Where am I going wrong?
This is from another post that I have found:
Apple document says
... In iOS 7, cells have a white background by default; in earlier versions of iOS, cells inherit the background color of the enclosing table view. If you want to change the background color of a cell, do so in the tableView:willDisplayCell:forRowAtIndexPath: method of your table view delegate.
You might need to use willDisplayCell UITableView delegate method to have a transparent background for your table view .
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cellforRowAtIndexPath:(NSIndexPath *)indexPath
{
[cell setBackgroundColor:[UIColor clearColor]];
}
How do I apply the code above as it says its for iOS 7?
Setting these wont be enough as you have not applied
clear color
to thecontentView
of thetableView
and so it is coloring white in it. Try this in cellForRowAtIndexPathcell.contentView.backgroundColor = UIColor .clearColor()
For this to work you have to implement a new tableview method:
You have to set both table and cell background clear.
Inside tableView function:
Note: Below code been tested in
Swift 3
.Method 1:
Select your tableViewCell from your
storyboard
and gotoAttributes Inspector
underView
changeBackground
toclear
Method 2: Try below code inside your
cellForRowAt
Note : If above method didn't works.try clear your project build by pressing
shift + option + command + k
Update: Update your
cellForRowAt
from below code...The two first answer doesn't work for me so I add a clear background everywhere and the white bg go away.
SWIFT 4.2
Maybe, you can check your table view's alpha.