Текст в метке искажается при установке тени на базовом виде? - PullRequest
2 голосов
/ 25 августа 2011

Я сейчас использую приведенный ниже код для визуализации представления моего секционированного tableView

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease]; 

    headerView.backgroundColor = [UIColor colorWithRed:30/255 green:30/255 blue:30/255 alpha:1.0];
    headerView.layer.masksToBounds = NO;
    headerView.layer.shadowOffset = CGSizeMake(0, 0);
    headerView.layer.shadowRadius = 3;
    headerView.layer.shadowOpacity = 0.5;
    headerView.layer.shouldRasterize = YES;

    UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(0, headerView.frame.size.height, headerView.frame.size.width, 3)];
    headerView.layer.shadowPath = path.CGPath;

    UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(12, 7, tableView.bounds.size.width - 10, 20)] autorelease];
    label.font = [UIFont boldSystemFontOfSize:16];
    label.text = header;
    label.textColor = [UIColor whiteColor];
    label.shadowColor = [UIColor blackColor];
    label.shadowOffset = CGSizeMake(0.0f, 1.0f);
    label.backgroundColor = [UIColor colorWithRed:30/255 green:30/255 blue:30/255 alpha:1.0];
    [headerView addSubview:label];

    return headerView;
}

По какой причине текст немного искажается и немного искажается? Я сузил его до эффектов, которые я накладываю на слой, хотя я не уверен, зачем он это делает?

1 Ответ

2 голосов
/ 25 августа 2011

Я вижу, вы устанавливаете shouldRasterize на YES.Помогает ли установка шкалы растеризации?Это будет необходимо, только если вы используете iPhone 4.

 [[headerView layer] setRasterizationScale:[[UIScreen mainScreen] scale]];
...