2015-03-14 2 views
1

Я пытаюсь нарисовать градиент в прямоугольнике. Следующие изображения показывают, что этот градиент вообще работает (синий), но он заполняет весь экран.рисунок градиент над прямоугольником в swift

Мне нравится делать градиент только в определенной области, такой как зеленый прямоугольник.

Как я могу это сделать?

enter image description here

Мой код для градиентного эксперимента :-)

let context = UIGraphicsGetCurrentContext() 

//let locations: [CGFloat] = [ 0.0, 0.25, 0.5, 0.75 ] 
let locations: [CGFloat] = [ 0.0, 0.99 ] 

let colors = [UIColor.blueColor().CGColor, 
       UIColor.whiteColor().CGColor] 

let colorspace = CGColorSpaceCreateDeviceRGB() 

let gradient = CGGradientCreateWithColors(colorspace, 
    colors, locations) 

var startPoint = CGPoint() 
var endPoint = CGPoint() 

startPoint.x = 0.0 
startPoint.y = 10.0 
endPoint.x = self.frame.width-100; 
endPoint.y = 10 

//let rectangle_main = CGRectMake(CGFloat(15), CGFloat(0), CGFloat(1000), CGFloat(30)); 

//CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0) 
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0) 

ответ

3

Вы должны указать путь отсечения прямо перед нанесением градиента. В вашем случае, создать путь прямоугольник и вызвать CGContextClip(context)

CGContextAddRect(context, CGRect(...)) 
CGContextClip(context) 

CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0) 

Градиент будет обрезано до прямоугольника.

+0

Большое спасибо. Именно то, что я искал! –

Смежные вопросы