我想用不同類型的主題更新UITableViewCell視圖。 我有幾個主題,但不能讓他們正常工作。試圖用額外的選項覆蓋initWithFrame
@interface CustomRowBackground : UIView {
CGColorRef topStroke;
CGColorRef lightColor;
CGColorRef darkColor;
CGColorRef bottomStroke; //also known as separator
CGColorRef borderColor;
}
- (id)initWithFrame:(CGRect)frame topStroke:(CGColorRef)top lightColor:(CGColorRef)light darkColor:(CGColorRef)dark bottomStroke:(CGColorRef)bottom borderColor:(CGColorRef)border;
@end
- (id)initWithFrame:(CGRect)frame topStroke:(CGColorRef)top lightColor:(CGColorRef)light darkColor:(CGColorRef)dark bottomStroke:(CGColorRef)bottom borderColor:(CGColorRef)border
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
topStroke = top;
lightColor = light;
darkColor = dark;
bottomStroke = bottom;
borderColor = border;
}
return self;
}
在我的UIViewController,.h文件中
現在,我有一個輔助方法擴展的UIColor類
@interface UIColor (BIExtras)
+(UIColor *)colorWithR:(CGFloat)red G:(CGFloat)green B:(CGFloat)blue A:(CGFloat)alpha;
@end
然後在.M我寫這篇
@implementation UIColor (BIExtras)
+(UIColor *)colorWithR:(CGFloat)red G:(CGFloat)green B:(CGFloat)blue A:(CGFloat)alpha {
return [UIColor colorWithRed:(red/255.0) green:(green/255.0) blue:(blue/255.0) alpha:alpha];
}
@end
然後我試着爲特定行設置所需的漸變。
TaskDisplayCell *cell = (TaskDisplayCell *)[self.tableView dequeueReusableCellWithIdentifier:TaskCellIdentifier];
if (indexPath.row == 0) {
cell.backgroundView = [[CustomRowBackground alloc] initWithFrame:CGRectMake(0,0,self.tableView.bounds.size.width,40)
topStroke:[UIColor colorWithR:119 G:119 B:119 A:1].CGColor
lightColor:[UIColor colorWithR:92 G:92 B:92 A:1].CGColor
darkColor:[UIColor colorWithR:70 G:70 B:70 A:1].CGColor
bottomStroke:[UIColor colorWithR:76 G:76 B:76 A:1].CGColor
borderColor:[UIColor colorWithR:110 G:110 B:110 A:1].CGColor];
}
注意:我不確定是否這樣做。我只是想用不同的漸變主題來初始化背景。
無論如何,它給了我一個錯誤。如果我手動在drawRect中寫入[UIColor colorWith]方法的分配,則該方法有效。如果我反而允許重用代碼,它會崩潰。
任何想法?
本
「它給了我一個錯誤」沒有幫助。什麼錯誤? – jrturton