2011-04-22 4 views
0

맨 위에 UIScrollView를 추가하는 사용자 지정 UIView 클래스가 있습니다. 내가 뭘 하려는지 UIView의 레이어에 그라디언트를 추가 할 수 있도록 스크롤보기 위에 표시됩니다. 현재 저는 이렇게하고 있습니다 :그라디언트를 뷰의 최상위 레이어로 추가하는 가장 좋은 방법은 무엇입니까?

그러나 이것은 약간의 해킹을 당하고 어떤 이유로 든 문제가되는 것처럼 보입니다. 하위 레이어를 추가하는 다른 방법은 뷰의 레이어에 추가되는 것과 관계없이 뷰의 최상위 레이어를 추가하는 것입니다.

답변

0

들으은 CGGradientCreateWithColorComponents을 이용하여 기울기() 또는 CGGradientCreateWithColors 그리기().

CGGradientRef guide

+0

으음를 호출 할 필요가있다, 내 질문은 어떻게 상위 레이어로 설정하기 위해 자사의 그라데이션을 그리는 방법에 대해입니까? – HenryH

0

는 u는있는 UIView의 레이어 속성에 추가 할 수있는 CALayer을 그릴 수있는 샘플 코드를 참조 AT- 문서는있다.

// 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

최상위 레이어가되도록 인덱스 0에 레이어를 삽입합니다. –

+0

인덱스 0이 맨 아래가 아님 – HenryH

+0

addSublayer : (CALayer *) 레이어 메소드가 귀하의 케이스에서 작동하지 않습니까? –

관련 문제