代码之家  ›  专栏  ›  技术社区  ›  Nik Burns

自定义UITableviewcell,选择单元格时仍显示CGGradient?

  •  0
  • Nik Burns  · 技术社区  · 14 年前

    我正在使用一个自定义的tableview单元格(就像Tweetie的快速滚动) 我在上下文中添加了一个渐变,看起来很不错,但是当我选择单元格时,渐变仍然可见。我不知道如何删除梯度时,细胞被选中?有什么想法吗?

    干杯

    尼克

     - (void)drawContentView:(CGRect)r
    {
     CGContextRef context = UIGraphicsGetCurrentContext();
    
     UIColor *backgroundColor = [UIColor whiteColor];
     UIColor *textColor = [UIColor blackColor];
     UIColor *dateColor = [UIColor colorWithRed:77.f/255.f green:103.f/255.f blue:155.f/255.f alpha:1];
    
     if(self.selected)
     {
    
    
      backgroundColor = [UIColor clearColor];
      textColor = [UIColor whiteColor];
    
    
     }
     [backgroundColor set];
     CGContextFillRect(context, r);
    
     //add gradient
     CGGradientRef myGradient;
     CGColorSpaceRef myColorspace;
    
     size_t num_locations = 2;
     CGFloat locations[2] = {0.0, 1.0};
     CGFloat components[8] = {0.9f, 0.9f, 0.9f, 0.7f, // Bottom Colour: Red, Green, Blue, Alpha.
      1.0f, 1.0f, 1.0f, 1.0}; // Top Colour: Red, Green, Blue, Alpha.
    
     myColorspace = CGColorSpaceCreateDeviceRGB();
     myGradient = CGGradientCreateWithColorComponents (myColorspace, components,
                   locations, num_locations);
    
     CGColorSpaceRelease(myColorspace);
    
     CGPoint startPoint, endPoint;
     startPoint.x = 0;
     startPoint.y = self.frame.size.height;
     endPoint.x = 0;
     endPoint.y = self.frame.size.height-15; // just keep the gradient static size, never mind how big the cell is
     CGContextDrawLinearGradient (context, myGradient, startPoint, endPoint, 0); 
     CGGradientRelease(myGradient);
    
     //gradient end
    
        //rest of custom drawing goes here....
    
        }
    

    我应该在if单元格中选择代码吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Nik Burns    14 年前

    看来我在发帖后找到了灵感;-)我刚刚把梯度材料包在了if(!self.selected){draw gradient}希望这对某些人有所帮助,这看起来比使用uiimagevew简单得多,占用的cpu更少 (thx汤姆)