Neredeyse bunu yapabileceğinizden eminim. Geçtiğimiz günlerde, UITableView bölümlerinin arka planını ve sınırlarını değiştirmeyi istemek için teknik destek talebimden birini kullandım. Elma mühendisi bana bunun gerçekten yapılması kolay bir şey olmadığını ve bunu yapmayı başarmış olsanız bile muhtemelen performansı etkileyeceğini söyledi. O da cocoawithlove beni işaret etti ve düzenleme uitableviews ilgili bir makale:
http://cocoawithlove.com/2009/08/adding-shadow-effects-to-uitableview.html
Gerçekten, kendi başlık oluştururken bu kadar çaba değildir. dışarı yorumladı, bu yüzden hemen çalışmayabilir - - Aşağıda benim projelerden biri çıkardı bazı kod ama fikir edinebilirsiniz:
- (CAGradientLayer *) greyGradient {
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.startPoint = CGPointMake(0.5, 0.0);
gradient.endPoint = CGPointMake(0.5, 1.0);
UIColor *color1 = [UIColor colorWithRed:255.0f/255.0f green:255.0f/255.0f blue:255.0f/255.0f alpha:1.0];
UIColor *color2 = [UIColor colorWithRed:240.0f/255.0f green:240.0f/255.0f blue:240.0f/255.0f alpha:1.0];
[gradient setColors:[NSArray arrayWithObjects:(id)color1.CGColor, (id)color2.CGColor, nil]];
return gradient;
}
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
CGFloat width = CGRectGetWidth(tableView.bounds);
CGFloat height = [self tableView:tableView heightForHeaderInSection:section];
UIView *container = [[[UIView alloc] initWithFrame:CGRectMake(0,0,width,height)] autorelease];
container.layer.borderColor = [UIColor grayColor].CGColor;
container.layer.borderWidth = 1.0f;
CAGradientLayer *gradient = [self greyGradient];
gradient.frame = container.bounds;
[container.layer addSublayer:gradient];
UILabel *headerLabel = [[[UILabel alloc] initWithFrame:CGRectMake(12,0,width,height)] autorelease];
headerLabel.backgroundColor = [UIColor clearColor];
headerLabel.font= [UIFont boldSystemFontOfSize:19.0f];
headerLabel.shadowOffset = CGSizeMake(1, 1);
headerLabel.textColor = [UIColor whiteColor];
headerLabel.shadowColor = [UIColor darkGrayColor];
NSString *title = [self tableView:tableView titleForHeaderInSection:section];
headerLabel.text = title;
return container;
}
emin olun
#import <QuartzCore/QuartzCore.h>
için By yol ... bu standart başlıkların görünüşünü taklit etmemeli - bunun sadece bir örneği. Ama eminim biraz deneme ve yanılma ile bunu standart olanları taklit etmek için değiştirebilir ve sonra renkleri biraz değiştirebilirsin.
Metninizde bir şey eksik görünüyor .. # neyi tanımlıyorsunuz? Muhtemelen bazı temel animasyon şeyler? – Thorsten
Oh evet, CAGradientLayer'ı kullanmak için QuartzCore'dı - yazıya ekleyeceğim. Teşekkürler – bandejapaisa
Ayrıca [container addSubview: headerLabel] eksik ve gerçekten böyle bir şey yaparsanız daha iyi: \t CGFloat width = tableView.bounds.size.width; \t CGFloat height = [otomatik tabloView: tableView heightForHeaderInSection: section]; UIView * container = [[UIView alloc] initWithFrame: CGRectMake (0,0, genişlik, yükseklik)]; –