Как воссоздать UIView по умолчанию то же как значение по умолчанию tableView:viewForHeaderInSection:?

Я пытался реализовать

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

для получения текстовой метки заголовка в разделе черного цвета вместо белого цвета но это выглядит настолько отличающимся от значения по умолчанию один созданный SDK, мой так ужасен.

Как воссоздать UIView с точно тем же как то от SDK?

Из документации Apple:

Обсуждение
Табличное представление использует стиль фиксированного шрифта для заголовков заголовка раздела. Если Вы хотите другой стиль шрифта, возвратите пользовательское представление (например, объект UILabel) в методе делегата tableView:viewForHeaderInSection: вместо этого.

7
задан Hoang Pham 24 May 2010 в 16:09
поделиться

2 ответа

Хотя это не совсем правильно, я публикую это в надежде, что кто-то сможет улучшить мой подход. Текст правильный (белый, как по умолчанию, но вы можете изменить это). Градиент фона и непрозрачность не идеальны (слишком легкие??) --здесь может потребоваться некоторая настройка.

Получите заголовок раздела.png здесь: http://img5.imageshack.us/img5/6616/sectionheaderbackground.png

// Create a stretchable image that emulates the default gradient
UIImage *buttonImageNormal = [UIImage imageNamed:@"sectionheaderbackground.png"];
UIImage *stretchableButtonImageNormal = [buttonImageNormal stretchableImageWithLeftCapWidth:12 topCapHeight:0];

// Create the view for the header
CGRect sectionFrame = CGRectMake(0.0, 0.0, 320.0, 22.0);
UIView *sectionView = [[UIView alloc] initWithFrame:sectionFrame];
sectionView.alpha = 0.9;
sectionView.backgroundColor = [UIColor colorWithPatternImage:stretchableButtonImageNormal];

// Create the label
CGRect labelFrame = CGRectMake(10.0, 0.0, 310.0, 22.0);
UILabel *sectionLabel = [[UILabel alloc] initWithFrame:labelFrame];
sectionLabel.text = @"Test section label";
sectionLabel.font = [UIFont boldSystemFontOfSize:18.0];
sectionLabel.textColor = [UIColor whiteColor];
sectionLabel.shadowColor = [UIColor grayColor];
sectionLabel.shadowOffset = CGSizeMake(0, 1);
sectionLabel.backgroundColor = [UIColor clearColor];
[sectionView addSubview:sectionLabel];
[sectionLabel release];

// Return the header section view
return sectionView;
13
ответ дан 6 December 2019 в 15:19
поделиться

Вы можете попытаться имитировать это, используя shadowColor и shadowOffset .

Я сделал это черным, например, используя следующий код:

label.shadowColor = [UIColor whiteColor];
label.shadowOffset = CGSizeMake(1, 1);

Изменяя цвета и комбинации теней, вы можете довольно хорошо имитировать метку.

0
ответ дан 6 December 2019 в 15:19
поделиться