在iOS 6上不赞成groupTableViewBackgroundColor?
我只是testing我的应用程序与iOS 6.0和Xcode 4.5GM,我已经build立了一个这样的看法:
[self.view setBackgroundColor:[UIColor groupTableViewBackgroundColor]];
所以,这个视图与普通的表格视图有相同的模式。
这适用于iOS 4和5,但在iOS 6中,它只是给我一个白色的背景。
这是否被弃用? 如果是这样,我该如何更换?
谢谢
在6.0种子程序期间,这个方法将被弃用如果你想在你自己的视图中有一个看起来像表视图背景的背景,那么你应该创build一个空的表视图并将其放在你的内容之后。
首先,添加到您的viewDidLoad :
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableViewBackground.png"]];
要么
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableViewBackground.png"]];
然后将这些图像添加到您的应用程序
tableViewBackground.png
我写了一个UIColor
类来replacegroupTableViewBackgroundColor
:
@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
这个解决scheme也允许调整背景的外观。 随意更改绘图代码:)
在iOS6 SKD中,UIInterface.h中的注释提示如下:
组风格表视图背景不能再用简单的颜色来表示。 如果你想在自己的视图中有一个看起来像表格背景的背景,那么你应该创build一个空的表格视图并将其放在你的内容之后。
这个方法在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中你喜欢的任何东西来压制警告。
如果它帮助任何人,这里具体是我在我的自定义视图中做什么来获得这个背景(使用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]; // ... }
尝试这个:
[myTableView setBackgroundView:nil]; [myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
如果使用故事板并有许多视图,则可能难以定位视图。 你可以点击“显示版本编辑器”button的右上angular。 这会将故事视图更改为XML文本视图。 search“groupTableViewBackGroundColor”。 你应该find这个属性的意见。
以前的iOs版本使用标准方法是个好主意。 所以我改进了James Boutcher的解决scheme:
+ (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]; } }
在@ NSElvis的解决scheme上进行详细阐述,这里是相同的分组表格视图背景资产(它足够宽,所以你不会在横向方向上获得有趣的效果)
要使用它,只需要做
[YOUR_VIEW setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"back-tableview"]]];