在iPhone 3.0 SDK中改变了渐变技巧?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在iPhone 3.0 SDK中改变了渐变技巧?相关的知识,希望对你有一定的参考价值。

我正在使用一个技巧来获得表格单元格的渐变。

在我升级到iPhone 3.0 SDK之后,我注意到,当我选择一个单元格时,渐变突出显示不再有效。

iPhone 2.2.1

iPhone 3.0

这是渐变代码:

    - (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];
}

如果不明显,qazxsw poi中的代码决定高亮颜色。 任何人都知道可能导致这种情况的原因,可能的解

答案

其实自己解决了这个问题。

if (self.selected) { 已改为 if (self.selected) { 在iPhone 3.0中

以上是关于在iPhone 3.0 SDK中改变了渐变技巧?的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone SDK 3.0 中链接静态库

如何在 iPhone SDK 3.0 中使用 Shake API?

升级到 iPhone SDK 3.0 导致 UIKit 问题

XCode 3.2 未检测到 iPhone SDK 3.0

iPhone 3G/2G, sdk 3.0 内存问题

iPhone - 在 3.0 和 4.0 操作系统/SDK 上播放视频?