//繪制背景漸變 /* CGCradientCreateWithColorComponents函數需要四個參數: 色彩空間:(Color Space)這是一個色彩范圍的容器,類型必須是CGColorSpaceRef.對於這個參數,我們可以傳入CGColorSpaceCreateDeviceRGB函數的返回值,它將給我們一個RGB色彩空間。 顏色分量的數組:這個數組必須包含CGFloat類型的紅、綠、藍和alpha值。數組中元素的數量和接下來兩個參數密切。從本質來講,你必須讓這個數組包含足夠的值,用來指定第四個參數中位置的數量。所以如果你需要兩個位置位置(起點和終點),那么你必須為數組提供兩種顏色 位置數組,顏色數組中各個顏色的位置:此參數控制該漸變從一種顏色過渡到另一種顏色的速度有多快。 位置的數量:這個參數指明了我們需要多少顏色和位置。 */ CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); CGFloat colors[] = { 51.0 / 255.0, 160.0 / 255.0, 0.0 / 255.0, 1.00, 68.0 / 255.0, 198.0 / 255.0, 0.0 / 255.0, 1.00, // 0.0 / 255.0, 50.0 / 255.0, 126.0 / 255.0, 1.00, }; CGGradientRef myGradient = CGGradientCreateWithColorComponents (rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4)); // Allocate bitmap context CGContextRef bitmapContext = CGBitmapContextCreate(NULL, 320, TITLE_CONTROL_HEIGHT, 8, 4 * 320, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaNoneSkipFirst); // Draw Gradient Here /* 創建好線性漸變后,我們將使用CGContextDrawLinearGradient過程在圖形上下文中繪制,此過程需要五個參數: Graphics context 指定用於繪制線性漸變的圖形上下文。 Axial gradient 我們使用CGGradientCreateWithColorComponents函數創建的線性漸變對象的句柄 start point 圖形上下文中的一個CGPoint類型的點,表示漸變的起點。 End Point表示漸變的終點。 Gradient drawing options 當你的起點或者終點不在圖形上下文的邊緣內時,指定該如何處理。你可以使用你的開始或結束顏色來填充漸變以外的空間。此參數為以下值之一:KCGGradientDrawsAfterEndLocation擴展整個漸變到漸變的終點之后的所有點 KCGGradientDrawsBeforeStartLocation擴展整個漸變到漸變的起點之前的所有點。0不擴展該漸變。 */ CGContextDrawLinearGradient(bitmapContext, myGradient, CGPointMake(160.0f, 0.0f),CGPointMake(160.0f, TITLE_CONTROL_HEIGHT), kCGGradientDrawsBeforeStartLocation); // Create a CGImage from context CGImageRef cgImage = CGBitmapContextCreateImage(bitmapContext); // Create a UIImage from CGImage UIImage *uiImage = [UIImage imageWithCGImage:cgImage]; // Release the CGImage CGImageRelease(cgImage); // Release the bitmap context CGContextRelease(bitmapContext); // Create the patterned UIColor and set as background color [titleScrollViewsetBackgroundColor:[UIColorcolorWithPatternImage:uiImage]];
