J'utilise un truc pour obtenir un dégradé sur les cellules de ma table. Après la mise à niveau vers le SDK iPhone 3.0, j'ai remarqué que la mise en évidence de dégradé, lorsque je sélectionne une cellule, ne fonctionne plus.Trick gradient changé dans l'iPhone 3.0 SDK?
iPhone 2.2.1
http://i32.tinypic.com/fkbldv.jpg
iPhone 3,0
http://i32.tinypic.com/2i6dnyp.jpg
Voici le code de gradient:
- (void)drawContentView:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor *textColor = [UIColor whiteColor];
// Apply gradient fill
CGFloat locations[2] = { 0.0, 0.75 };
CGFloat components[8] = {0.50, 0.50, 0.50, 1.0, // Start color
0.23, 0.23, 0.23, 1.0}; // End color
if (self.selected) {
components[0] -= 0.10;
components[1] -= 0.10;
components[2] -= 0.10;
components[4] -= 0.10;
components[5] -= 0.10;
components[6] -= 0.10;
}
CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB();
CGGradientRef myGradient = CGGradientCreateWithColorComponents (myColorspace, components, locations, 2);
CGPoint start = CGPointMake(0, 0);
CGPoint end = CGPointMake(0, rect.size.height);
CGContextDrawLinearGradient(context, myGradient, start, end, 0);
[textColor set];
CGSize mainTextSize = [self.mainText sizeWithFont:(markedRead ? mainTextReadFont : mainTextFont) constrainedToSize:CGSizeMake(288, 200) lineBreakMode:UILineBreakModeWordWrap];
[self.mainText drawInRect:CGRectMake(6, 4, mainTextSize.width, mainTextSize.height) withFont:(markedRead ? mainTextReadFont : mainTextFont)];
[[UIColor lightGrayColor] set];
[self.subText drawAtPoint:CGPointMake(6, mainTextSize.height + 2) forWidth:288 withFont:subTextFont lineBreakMode:UILineBreakModeTailTruncation];
}
S'il est pas évident, le code if (self.selected) {
décide la couleur haute lumière.
Quelqu'un sait ce qui pourrait causer cela, une solution possible?
En fait, vous pouvez être '' highlighted' sans être selected' (et peut-être l'inverse aussi). Habituellement, je vérifie pour un ou un dans mon état. – jbrennan