UITableViewCell колер фону адрозніваецца ў iOS5 супраць iOS4

Згрупаваных UITableViewCell выкарыстоўвае tableCellGroupedBackgroundColor колеру замест рэгулярнага whiteColor колер, у прашыўцы 5. У выніку, на фоне вашых уласных клетак ня матч з тымі UITableViewCell (па змаўчанні, падзагаловак, клеткі тыпу значение1, значение2).

Які самы лепшы спосаб, каб пераканацца, што той жа колер фону выкарыстоўваецца ў звычаі UITableViewCell і па змаўчанні UITableViewCell (і звязаны з UILabel і іншыя элементы) - w.r.t. як iOS4 і iOS5?

Заўвага: У рэдактары я магу бачыць новы колер пад назвай tableCellGroupedBackgroundColor , але няма катэгорыі/даступны метад, каб атрымаць гэты колер праграмна.

<Моцны> Edit:

Вы можаце выкарыстоўваць наступную тэхніку, каб змяніць колер фону элементаў кіравання на вашай камеры, але ў-выпадку карыстацкіх вочак, як вы можаце ўсталяваць адпаведны колер фону на аснове аперацыйнай сістэмы (IOS 4 супраць прашыўкі 5)?

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    for (UIView* view in cell.contentView.subviews) {
        view.backgroundColor = cell.backgroundColor;
    }
}

Easiest solution (my current implemented): This just makes sure that all my cells have white background, irrespective of the OS. Somehow, i don't need to apply white color to cell.contentView.subviews.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    [cell setBackgroundColor:[UIColor whiteColor]];
}
5

3 адказы

Вось адзін хуткі і брудны спосаб зрабіць гэта, мяркуючы, што мы маем справу з колерам фону, ня градыенты або што-небудзь падобнае.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    for (UIView *subview in [cell.contentView subviews]) {
        subview.backgroundColor = cell.backgroundColor;
    }
}

КСН 5, гэта можа дапамагчы пазбегнуць брыдкіх прагляду ліній. :)

3
дададзена

Калі падклас UITableViewCell вы можаце таксама паспрабаваць перакрываючы setBackgroundColor :

- (void)setBackgroundColor:(UIColor *)backgroundColor {
    [super setBackgroundColor:backgroundColor];
    [[self myLabel] setBackgroundColor:backgroundColor];
}

Аказваецца, што гэты метад выкарыстоўваецца прашыўкай, калі ён усталёўвае колер фону па змаўчанні для вочка.

0
дададзена

У якасці альтэрнатывы вы можаце ўсталяваць BackgroundColor вашых падвіды (этыкеткі і г.д.) на [UIColor clearColor]

0
дададзена
Гэта не добрая ідэя, таму налада празрыстага колеру для фону на любым поглядзе запаволіць прадукцыйнасць. Калі вам не патрэбен Градыентнае фон, чым вы павінны ўсталяваць фон для непразрыстых. Гэта тое, што кампанія Apple рэкамендуе і гэта таксама мой досвед ...
дададзена аўтар Borut Tomazin, крыніца