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

#iphone #ios #ipad #uiview #gradient

#iPhone #iOS #iPad #uiview #градиент

Вопрос:

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

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

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

Спасибо

Ответ №1:

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

Руководство по CGGradientRef

Комментарии:

1. ухх, мой вопрос о том, как нарисовать градиент, как установить его в качестве верхнего слоя?

Ответ №2:

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

 -(void)drawInContext:(CGContextRef)theContext

{    
  

// self.непрозрачность =.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 , чтобы иметь пользовательский слой. Возможно, потребуется вызвать

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

Комментарии:

1. вставьте слой с индексом 0, чтобы сделать его самым верхним слоем.

2. индекс 0 — это нижний слой, а не верхний

3. в вашем случае не работает метод слоя addSublayer: (CALayer *)?