36

iOS6.0とXcode4.5GMでアプリをテストしていて、次のようなビューを設定しました。

[self.view setBackgroundColor:[UIColor groupTableViewBackgroundColor]];

したがって、ビューは一般的なテーブルビューと同じパターンになります。

これはiOS4と5で正常に機能しますが、iOS6では背景が白になります。

これは非推奨ですか?もしそうなら、どうすればそれを交換できますか?

ありがとう

4

9 に答える 9

31

このメソッドは、6.0シードプログラムで非推奨になります。テーブルビューの背景のように見える独自のビューの背景が必要な場合は、空のテーブルビューを作成し、コンテンツの背後に配置する必要があります。

于 2012-09-17T03:33:00.207 に答える
25

まず、これをviewDidLoadに追加します。

self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableViewBackground.png"]];

また

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableViewBackground.png"]];

次に、この画像をアプリに追加します。

tableViewBackground.png

tableViewBackground.png

tableViewBackground@2x.png

tableViewBackground@2x.png

于 2012-10-29T16:16:59.960 に答える
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

このソリューションでは、背景の外観を微調整することもできます。描画コードを自由に変更してください:)

于 2012-10-01T10:47:30.753 に答える
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で好きなものに設定して、警告を抑制することができます。

于 2012-09-26T15:47:45.243 に答える
6

誰にも役立つ場合は、この背景を取得するためにカスタムビューで行っていることを具体的に示します(Beloevre氏からのヒントを使用)

- (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];
    // ...
}
于 2013-01-13T14:19:39.707 に答える
2

これを試して:

[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];
于 2012-10-03T08:04:17.787 に答える
1

ストーリーボードを使用していて多くのビューがある場合、ビューを見つけるのが難しい場合があります。右上隅にある [バージョン エディタを表示] ボタンをクリックできます。これにより、ストーリー ビューが XML テキスト ビューに変更されます。「groupTableViewBackGroundColor」を検索します。この属性を持つビューが見つかるはずです。

ここに画像の説明を入力

于 2013-02-03T22:28:30.047 に答える
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];
    }
}
于 2013-02-02T16:46:45.013 に答える
0

@NSElvis のソリューションを詳しく説明すると、同一のグループ化されたテーブル ビューの背景アセットがここにあります (十分な幅があるため、横方向に面白い効果が得られません)。

back-tableview@2x.png

それを使用するには、単に

[YOUR_VIEW setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"back-tableview"]]];
于 2013-05-13T09:39:14.450 に答える