我只是用iOS 6.0和Xcode 4.5GM测试我的应用程序,我设置了这样的视图:
[self.view setBackgroundColor:[UIColor groupTableViewBackgroundColor]];
因此,视图与普通表视图具有相同的模式。
这在iOS 4和5上运行良好,但在iOS 6中它只是给我一个白色背景。
这是否已被弃用?如果是这样,我该如何更换呢?
由于
答案 0 :(得分:31)
在6.0种子程序中,不推荐使用此方法 如果您想在自己的视图中拥有一个看起来像表视图背景的背景, 然后你应该创建一个空表视图并将它放在你的内容之后。
答案 1 :(得分:25)
首先,将其添加到 viewDidLoad :
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableViewBackground.png"]];
OR
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableViewBackground.png"]];
然后将此图片添加到您的应用中:
<强> tableViewBackground.png 强>
<强> tableViewBackground@2x.png 强>
答案 2 :(得分:18)
我写了一个UIColor
类别来替换groupTableViewBackgroundColor
:
@interface UIColor (UITableViewBackground)
+ (UIColor *)groupTableViewBackgroundColor;
@end
@implementation UIColor (UITableViewBackground)
+ (UIColor *)groupTableViewBackgroundColor
{
__strong static UIImage* tableViewBackgroundImage = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(7.f, 1.f), NO, 0.0);
CGContextRef c = UIGraphicsGetCurrentContext();
[[self colorWithRed:185/255.f green:192/255.f blue:202/255.f alpha:1.f] setFill];
CGContextFillRect(c, CGRectMake(0, 0, 4, 1));
[[self colorWithRed:185/255.f green:193/255.f blue:200/255.f alpha:1.f] setFill];
CGContextFillRect(c, CGRectMake(4, 0, 1, 1));
[[self colorWithRed:192/255.f green:200/255.f blue:207/255.f alpha:1.f] setFill];
CGContextFillRect(c, CGRectMake(5, 0, 2, 1));
tableViewBackgroundImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
});
return [self colorWithPatternImage:tableViewBackgroundImage];
}
@end
此解决方案还允许调整背景的外观。随意更改绘图代码:)
答案 3 :(得分:13)
在iOS6 SKD中,UIInterface.h中的注释提示如下:
无法再表示组样式表视图背景 简单的颜色。 如果您想在自己的视图中拥有背景 看起来像表视图背景,那么你应该创建 一个空表视图并将其放在您的内容后面。
在6.0种子程序
期间,不推荐使用此方法
一个简单的解决方案是使用等效的RGB值设置背景:
[self.view setBackgroundColor:[UIColor colorWithRed:215.0/255.0 green:217.0/255.0 blue:223.0/255.0 alpha:1.0]];
您可以将视图背景颜色设置为白色或xib中的任何内容以禁止显示警告。
答案 4 :(得分:6)
如果它对任何人都有帮助,这里特别是我在自定义视图中所做的事情来获得这个背景(使用Beloeuvre先生的提示)
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor clearColor];
UITableView *tv = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
[self.view addSubview:tv];
[self.view sendSubviewToBack:tv];
// ...
}
答案 5 :(得分:2)
试试这个:
[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
答案 6 :(得分:1)
如果您使用故事板并拥有许多视图,则可能很难找到该视图。您可以单击右上角的“显示版本编辑器”按钮。这会将故事视图更改为XML文本视图。搜索“groupTableViewBackGroundColor”。您应该找到具有此属性的视图。
答案 7 :(得分:0)
对于以前的iOs版本使用标准方法是个好主意。所以我改进了James Boutcher的解决方案:
+ (void)setBackgroundColorForTableView:(UITableView*) tableView
{
UIColor* color = [UIColor whiteColor];
NSString* version = [[UIDevice currentDevice] systemVersion];
if([version floatValue] < 6.0)
{
tableView.backgroundColor = color;
}
else
{
tableView.backgroundView = nil;
UIView* bv = [[UIView alloc] init];
bv.backgroundColor = color;
tableView.backgroundView = bv;
[bv release];
}
}
答案 8 :(得分:0)
详细说明@ NSElvis的解决方案,这里是相同的分组表视图背景资产(它足够宽,所以你不会在横向方向上获得有趣的效果)
要使用它,只需执行
[YOUR_VIEW setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"back-tableview"]]];