2009-08-08 15 views
0

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?

Répondre

4

En fait, j'ai résolu cela moi-même.

if (self.selected) {
a changé à
if (self.highlighted) {
dans l'iPhone 3.0

+0

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