UITableView清晰的背景

时间:2013-09-12 00:23:16

标签: ios uitableview

我意识到iOS 7还没有正式发布,我们不应该讨论它,但我会疯狂地试图找出这个问题。在iOS 6上,我的表视图是透明的,看起来很棒。第一次运行iOS 7,背景为白色。

我已经尝试将表backgroundColor,单元格颜色等制作成UIColor clearColor但没有变化。

如何解决这个问题?

the table

21 个答案:

答案 0 :(得分:120)

    // Fix for iOS 7 to clear backgroundColor
    cell.backgroundColor = [UIColor clearColor];
    cell.backgroundView = [[UIView new] autorelease];
    cell.selectedBackgroundView = [[UIView new] autorelease];

in cellForRowAtIndexPath

另外,请确保您的tableview实际上具有透明背景(在故事板中): enter image description here

答案 1 :(得分:58)

放这个:

cell.backgroundColor = [UIColor clearColor];

在本节中:

cellForRowAtIndexPath

答案 2 :(得分:25)

这已经得到了回答,但在很多方面都是错误的。

您需要实现以下委托方法:

    - (void)tableView:(UITableView *)tableView  willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [cell setBackgroundColor:[UIColor clearColor]];
}

你不能把修复程序放在cellForRowAtIndexPath中,因为那是在渲染单元格之后,它会在背景设置为清除之前闪烁白色背景(在较慢的设备上)。

使用此委托方法,您的问题就解决了!

答案 3 :(得分:24)

首先尝试将backgroundView设置为nil。

[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor clearColor]];

不确定这是对iOS7文档的更改,还是一直存在,只是不影响背景颜色,但每UITableView Class Reference @property backgroundView

“您必须将此属性设置为nil才能设置表格视图的背景颜色。”

编辑:更正后的代码语法

答案 4 :(得分:14)

实际上,根据文档(UITableViewCell Class Reference),更改单元格背景颜色的官方正确位置是不同的:

  

无论您使用预定义单元格还是自定义单元格,都可以更改单元格   使用backgroundView属性或通过更改的背景   继承了backgroundColor属性。在iOS 7中,单元格为白色   背景默认;在早期版本的iOS中,单元格继承了   封闭表视图的背景颜色。如果你想改变   一个单元格的背景颜色,在   tableView:willDisplayCell:forRowAtIndexPath:表视图的方法   委派。

答案 5 :(得分:6)

迅速3,4和5

cell.backgroundColor = UIColor.clear

答案 6 :(得分:5)

这是一个非常令人沮丧的问题。这是我目前的解决方案:

将此添加到您的UITableViewCell子类。

- (void)didMoveToSuperview {
    [super didMoveToSuperview];

    self.backgroundColor = [UIColor clearColor];
}

答案 7 :(得分:5)

这在iOS7 +中适用于我:

self.tableView.backgroundColor =[UIColor blueColor];
self.tableView.opaque = NO;
self.tableView.backgroundView = nil;`

然后在cellForRowAtIndexPath:

cell.backgroundColor = [UIColor clearColor];

答案 8 :(得分:4)

试试此代码段

cell.contentView.backgroundColor = [UIColor clearColor];
cell.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5];

答案 9 :(得分:4)

当我为每个单元格编辑一个清晰的背景颜色并为表格本身提供清晰的颜色时,这对我只有用..两个程序性的

设置表格的清晰颜色:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    initMenu()
    myTableView.backgroundColor = UIColor.clearColor()
}

设置单元格的颜色:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("tablecellid", forIndexPath: indexPath)
    cell.backgroundColor = UIColor.clearColor()
    return cell
}

答案 10 :(得分:3)

为表格视图创建IB Outlet  @IBOutlet weak var yourTable:UITableView!

在视图中加载

override func viewDidLoad() {
    yourTable.delegate = self
    yourTable.dataSource = self

    yourTable.backgroundColor = UIColor.clearColor()
}

如果你想清除Cell的颜色,也可以在

中执行此操作
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    cell.backgroundColor = UIColor.clearColor() 

}

答案 11 :(得分:3)

一件好事。 UITable的默认颜色似乎是白色(我不知道为什么)

Background white

但更好的改变。

答案 12 :(得分:3)

首先设置

tableView.backgroundColor = [UIColor clearColor];

第二集

tableCell.backgroundColor = [UIColor clearColor];

答案 13 :(得分:2)

swift 3

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.backgroundColor = UIColor.clear
}

答案 14 :(得分:2)

在我的应用中,当我更新backgroundColor时,我必须将UITableViewCell课程的[UIColor clearColor]设置为iOS 7颜色。

答案 15 :(得分:2)

只需在视图背景上为表格和单元格选择“清除颜色”。

答案 16 :(得分:2)

尝试

[myTable setSeparatorStyle:UITableViewCellSeparatorStyleNone];
[myTable setSeparatorInset:UIEdgeInsetsZero];

cell.backgroundColor = [UIColor clearColor];

答案 17 :(得分:2)

在我的情况下,使用xib创建单元格。似乎xcode5上的界面构建器无法将clearColor设置为cell.backgroundColor。

我需要做的就是设置

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// get the cell from the nib
//then force the backgroundColor
cell.backgroundColor = [UIColor clearColor]
return cell;
}

答案 18 :(得分:1)

// Fix iOS 7 clear backgroundColor compatibility 
// I Think this two lines only are enough

cell.backgroundColor = [UIColor clearColor];
cell.selectedBackgroundView = [[UIView new] autorelease];

答案 19 :(得分:0)

tableView.backgroundColor = [UIColor clearColor];
在viewDidLoad中

如果这不起作用,请尝试:

tableView.backgroundView = nil;

答案 20 :(得分:0)

在swift 3中

require 'net/http'
require 'uri'

puts "Enter URL :-"
gurl = gets.chomp

File.foreach('test.txt') do |line|
  line.chomp!
  aurl = "#{gurl}/#{line}"
  encoded_url = URI.encode(aurl)
  url = URI.parse(encoded_url)
  puts "\n #{url} \n"
  res = Net::HTTP.get_response(url)
  puts "\n Response received for #{line} => #{res.code} \n"
end