Каков наилучший способ добавить градиент в качестве верхнего слоя вида? - PullRequest
0 голосов
/ 23 апреля 2011

У меня есть собственный класс UIView, к которому я добавляю UIScrollView.То, что я пытаюсь сделать, это добавить градиент к слою UIView, чтобы он был виден над представлением прокрутки.В настоящее время я делаю это так:

[self.layer insertSublayer:self.leftShadowLayer atIndex:[self.layer.sublayers count]];
[self.layer insertSublayer:self.rightShadowLayer atIndex:[self.layer.sublayers count]];

, но это кажется немного хакерским и по какой-то причине склонным к проблемам.Есть ли какой-либо другой предпочтительный способ добавления подслоя - это верхний слой в представлении независимо от того, что еще добавлено в слои представления?

Thx

Ответы [ 2 ]

0 голосов
/ 25 апреля 2011

См. Пример кода для рисования CALayer, который вы можете добавить к свойству слоя UIView.

-(void)drawInContext:(CGContextRef)theContext

{    

// self.opacity = .5;
CGMutablePathRef thePath = CGPathCreateMutable ();

//CGPathMoveToPoint(thePath,NULL,100.0f,200.f);

CGPoint aOnePoint=CGPointMake(cgpoint.x,tipPoint.y);
CGPoint aTwoPoint=CGPointMake(cgpoint.x+5,460);
CGPoint aThreePoint=CGPointMake(320,100);
CGPoint aFourPoint=CGPointMake(320,tipPoint.y-25);
CGPoint points[]={aOnePoint,aTwoPoint,aFourPoint};
CGPathAddLines(thePath, NULL,points,3);



CGContextBeginPath(theContext);
CGContextAddPath(theContext, thePath);
//CAGradientLayer here...using the CGCreateGradient methods.


CGContextSetLineWidth(theContext,2.0f);

CGSize theShadowSize = CGSizeMake(4.0f,4.0f);

CGContextSetShadowWithColor(theContext, theShadowSize,3,[UIColor darkGrayColor].CGColor);
CGContextSetFillColorWithColor(theContext,[UIColor redColor].CGColor);
CGContextFillPath(theContext);

CFRelease(thePath);

}

таким образом, вы можете нарисовать свой собственный слой и добавить его к свойству .layer вида.Обратите внимание, что мы должны переопределить - (void)drawInContext:(CGContextRef)theContext, чтобы иметь пользовательский слой.Возможно, потребуется позвонить

Надеюсь, что поможет ..

0 голосов
/ 24 апреля 2011

Нарисуйте градиент, используя CGGradientCreateWithColorComponents () или CGGradientCreateWithColors ().Документация находится по адресу -

CGGradientRef guide

...