Cocoa touch UIColor groupTableViewBackgroundColor是透明的

Cocoa touch UIColor groupTableViewBackgroundColor是透明的,cocoa-touch,ipad,uitableview,ios,uicolor,Cocoa Touch,Ipad,Uitableview,Ios,Uicolor,我在导航堆栈上有一个分组样式UITableView,当我单击单元格时,我将UIDatePicker推到堆栈上。问题是我希望此自定义视图的背景色与表视图的背景色相同 我尝试设置自定义视图的背景色,如下所示: [UIView beginAnimations:nil context:NULL]; [picker setFrame:CGRectMake(0,200,320,216)]; [UIView commitAnimations]; datePicker.backgrou

我在导航堆栈上有一个分组样式
UITableView
,当我单击单元格时,我将
UIDatePicker
推到堆栈上。问题是我希望此自定义视图的背景色与表视图的背景色相同

我尝试设置自定义视图的背景色,如下所示:

    [UIView beginAnimations:nil context:NULL];
    [picker setFrame:CGRectMake(0,200,320,216)];
    [UIView commitAnimations];
datePicker.backgroundColor=[UIColor groupTableViewBackgroundColor]

但这是透明的。我还尝试修改底层的
CGColor
对象,使其alpha值为1.0,从而使背景颜色为黑色

以下各项确实按预期工作:

datePicker.backgroundColor=[UIColor lightGrayColor]

但是,当然,此颜色与分组表的背景颜色不太匹配

我这样做完全错了吗?我发现了一篇类似的帖子,但没有任何有用的回复。

你说的“将UIDatePicker推到堆栈上”是什么意思?为什么不尝试将UIDatePicker设置为视图中的动画

加载视图时,创建选择器并将帧设置为屏幕外,例如

    [picker setFrame:CGRectMake(0,960,320,216)];
然后,不要“推”选择器,而是在视图中设置其动画,如:

    [UIView beginAnimations:nil context:NULL];
    [picker setFrame:CGRectMake(0,200,320,216)];
    [UIView commitAnimations];
当您想解除选取器时,只需将其隐藏如下:

    [UIView beginAnimations:nil context:NULL];
    [picker setFrame:CGRectMake(0,960,320,216)];
    [UIView commitAnimations];
如果需要,您还可以添加一个带有“完成”按钮的工具栏来关闭选择器,这对我来说非常有用

如果拾取器的内容将显示在表格上,则可以在该动画序列中设置表格的帧。在第一种方法中,将表的大小设为原来的一半(例如,我的示例中为150),然后在隐藏序列中,将表设为原来的大小(本例中为415)。当您隐藏选择器时,调用
[tableView reloadData]
刷新表。

将UIDatePicker推到堆栈上是什么意思?为什么不尝试将UIDatePicker设置为视图中的动画

加载视图时,创建选择器并将帧设置为屏幕外,例如

    [picker setFrame:CGRectMake(0,960,320,216)];
然后,不要“推”选择器,而是在视图中设置其动画,如:

    [UIView beginAnimations:nil context:NULL];
    [picker setFrame:CGRectMake(0,200,320,216)];
    [UIView commitAnimations];
当您想解除选取器时,只需将其隐藏如下:

    [UIView beginAnimations:nil context:NULL];
    [picker setFrame:CGRectMake(0,960,320,216)];
    [UIView commitAnimations];
如果需要,您还可以添加一个带有“完成”按钮的工具栏来关闭选择器,这对我来说非常有用


如果拾取器的内容将显示在表格上,则可以在该动画序列中设置表格的帧。在第一种方法中,将表的大小设为原来的一半(例如,我的示例中为150),然后在隐藏序列中,将表设为原来的大小(本例中为415)。当您隐藏选择器时,调用
[tableView reloadData]
刷新表格。

谢谢-我想我完全搞错了。这样更好。这个解决方案唯一的问题是,我无法调整表视图的大小。在
tableView
上调用
setFrame
似乎没有效果。UITableView必须位于UIView中。如果你的控制器是UITableViewController,那么你将无法调整它的大小。谢谢-我想我完全错了。这样更好。这个解决方案唯一的问题是,我无法调整表视图的大小。在
tableView
上调用
setFrame
似乎没有效果。UITableView必须位于UIView中。如果控制器是UITableViewController,则无法调整其大小。