0
실제 문제를 설명 할 수 있기를 바랍니다. 루트 컨트롤러가 테이블보기 컨트롤러 인 탐색 컨트롤러가 있습니다. 그래디언트 하위보기를 배경으로 추가하여 테이블 뷰 컨트롤러 배경을 페인트하고 싶습니다. 모든 것이 잘 작동하지만 그라디언트 배경이 반투명 인 경우에도 탐색 바 바로 아래에 적용됩니다. 사실 반투명으로 보지만이 구성에서는 배경이 탐색 바 아래에서 시작됩니다. 내비게이션 막대를 아래의 배경처럼 그라디언트로 만들 수도 있습니다. 어떻게해야합니까? 제 질문은 충분히 명확합니까? 대단히 감사합니다.탐색 컨트롤러 아래의 테이블보기 컨트롤러 : 탐색 막대 아래의 테이블보기 배경
[self drawGradientBackground];
- (void)drawGradientBackground
{
self.view.backgroundColor = [UIColor clearColor];
RMABackGround *background = [[RMABackGround alloc] initWithFrame:self.view.bounds];
background.gradientColors = @[[UIColor colorWithRed:52/255.0f green:153/255.0f blue:55/255.0f alpha:1.0f], [UIColor colorWithRed:53/255.0f green:168/255.0f blue:224/255.0f alpha:1.0f]];
[self.view addSubview:background];
}
Into RMABackGround class:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
NSMutableArray *colors = [NSMutableArray arrayWithCapacity:[self.gradientColors count]];
[self.gradientColors enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[UIColor class]]) {
[colors addObject:(__bridge id)[obj CGColor]];
} else if (CFGetTypeID((__bridge void *)obj) == CGColorGetTypeID()) {
[colors addObject:obj];
} else {
@throw [NSException exceptionWithName:@"CRGradientLabelError"
reason:@"Object in gradientColors array is not a UIColor or CGColorRef"
userInfo:NULL];
}
}];
CGContextSaveGState(context);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0, -rect.size.height);
CGGradientRef gradient = CGGradientCreateWithColors(NULL, (__bridge CFArrayRef)colors, NULL);
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint,
kCGGradientDrawsAfterEndLocation | kCGGradientDrawsBeforeStartLocation);
CGGradientRelease(gradient);
CGContextRestoreGState(context);
[super drawRect:rect];
}
안녕하세요 riccardo, 스크린 샷을 추가하고 코드를 추가하여 그라데이션을 초기화하는 방법을 알려주세요. – nburk
아, 질문에 스크린 샷을 추가하려면 특정 점수가 필요합니다. 그 점수를 얻으려고 노력하십시오. 그리고 하나 더 힌트 : 코멘트에 게시하는 것이 아니라 실제로 읽을 수 있도록 코드로 질문을 업데이트하십시오 :) – nburk
어떻게 내 질문을 더 잘 설명 할 수있는 코드를 붙여 넣을 수 있습니까? –