tableViewheader прозрачный фон становится черным - PullRequest
0 голосов
/ 04 января 2012

Я очистил фон от таблицы. Теперь я создал изображение в формате PNG с прозрачным фоном и установил его как backgroundView для tableViewHeader.

Каким-то образом прозрачный фон PNG становится черным в tableViewHeader. У кого-нибудь есть какие-либо подсказки как?

Спасибо.

//Header Layout
UIView *headerView =
[[[UIView alloc]
  initWithFrame:CGRectMake(0, 0, 300, 70)]
 autorelease];
UILabel *headerLabel =
[[[UILabel alloc]
  initWithFrame:CGRectMake(10, 10, 300, 40)]
 autorelease];
headerView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"headerBG.png"]];
headerLabel.text = NSLocalizedString(@"Huidig", @"");
headerLabel.textColor = [UIColor redColor];
headerLabel.shadowColor = [UIColor greenColor];
headerLabel.shadowOffset = CGSizeMake(0, 1);
headerLabel.font = [UIFont boldSystemFontOfSize:22];
headerLabel.backgroundColor = [UIColor clearColor];
[headerView addSubview:headerLabel];
tableView.tableHeaderView = headerView;

Ответы [ 5 ]

1 голос
/ 04 января 2012

вы пробовали

[tableView setBackgroundColor:[UIColor clearColor]];
[tableView setBackgroundView:nil];
0 голосов
/ 14 мая 2012

Я столкнулся с подобной проблемой, когда имел фоновое изображение для UILabel, используя [UIColor colorWithPatternImage:]. Устройство под управлением 4.2.1 (iPhone 3G) отображало прозрачную часть изображения в черном цвете. Я попытался изменить непрозрачное свойство, а также установить изображение для слоя, но оба не работали.

Вместо этого я реализовал новый класс, наследующий UILabel, а в drawRect я просто рисую изображение:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClearRect(context, rect);

    UIImage *image = [UIImage imageNamed:@"graphics/pricetag.png"];
    CGContextDrawImage(context, rect, image.CGImage);
    // Have UILabel draw the text
    [super drawRect:rect];
}
0 голосов
/ 04 января 2012

попробовал это ???

[tableView setBackgroundColor:[UIColor clearColor]];
[tableView setBackgroundView:nil];

и в вашем

-(void)viewDidAppear{
 ....................
 ....................
[tableview reloadData];
}

Может быть, это будет работать сейчас.

0 голосов
/ 04 января 2012

Вместо использования +colorWithPatternImage попробуйте установить contents из headerView основы CALayer для вашего изображения.Для этого подхода вам нужно будет связать и импортировать <QuartzCore/QuartzCore.h>.

headerView.layer.contents = [UIImage imageNamed:@"headerBG"].CGImage;
0 голосов
/ 04 января 2012

Я попробовал ваш код и у меня работает абсолютно нормально. Пожалуйста, проверьте ваш стол еще раз. Если проблема не устранена, очистите ее (shift + commond + K) и скомпилируйте еще раз или проверьте свой образ еще раз. Опция FInal очистит ваш просмотр таблицы еще раз.

    tableView.backgroundColor = [UIColor clearColor];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...