Является ли groupTableViewBackgroundColor устаревшим на iOS 6? - программирование
Подтвердить что ты не робот

Является ли groupTableViewBackgroundColor устаревшим на iOS 6?

Я просто тестировал свое приложение с iOS 6.0 и Xcode 4.5GM, и я создал такое представление:

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

Таким образом, представление имеет тот же шаблон, что и общее представление таблицы.

Это отлично работает на iOS 4 и 5, но в iOS 6 он просто дает мне белый фон.

Неужели это устарело? Если да, то как я могу его заменить?

Спасибо

4b9b3361

Ответ 1

Этот метод будет устаревать во время программы семян 6.0 Если вы хотите иметь фон в своем собственном представлении, который выглядит как фон в виде стола, то вы должны создать пустой табличный вид и поместить его за свой контент.

Ответ 2

Сначала добавьте это в свой viewDidLoad:

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

ИЛИ

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

Затем добавьте эти изображения в свое приложение:

tableViewBackground.png

tableViewBackground.png

[email protected]

tableViewBackground@2x.png

Ответ 3

Я написал категорию 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

Это решение также позволяет настроить внешний вид фона. Не стесняйтесь изменять код чертежа:)

Ответ 4

В 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, чтобы подавить предупреждение.

Ответ 5

Если это помогает кому-то, вот конкретно, что я делаю в своем обычном представлении, чтобы получить этот фон (используя подсказку от г-на Беловевра)

- (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];
    // ...
}

Ответ 6

Попробуйте следующее:

[myTableView setBackgroundView:nil];
[myTableView setBackgroundView:[[[UIView alloc] init] autorelease]];

Ответ 7

У вас может быть трудное время, чтобы найти представление, если вы используете раскадровку и имеете много просмотров. Вы можете нажать кнопку "Показать редактор редакторов" в правом верхнем углу. Это изменит вид истории на текстовый вид XML. Найдите "groupTableViewBackGroundColor". Вы должны найти представления с этим атрибутом.

enter image description here

Ответ 8

Хорошая идея использовать стандартные методы для предыдущих версий iOs. Поэтому я улучшил решение Джеймса Бутчера:

+ (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];
    }
}

Ответ 9

Разрабатывая решение @NSElvis, вот то же самое, что и исходный фон таблицы с одинаковой группировкой (он достаточно широкий, чтобы вы не получали забавные эффекты в альбомной ориентации)

[email protected]

Чтобы использовать его, просто выполните

[YOUR_VIEW setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"back-tableview"]]];