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]; 
} 
+0

안녕하세요 riccardo, 스크린 샷을 추가하고 코드를 추가하여 그라데이션을 초기화하는 방법을 알려주세요. – nburk

+0

아, 질문에 스크린 샷을 추가하려면 특정 점수가 필요합니다. 그 점수를 얻으려고 노력하십시오. 그리고 하나 더 힌트 : 코멘트에 게시하는 것이 아니라 실제로 읽을 수 있도록 코드로 질문을 업데이트하십시오 :) – nburk

+0

어떻게 내 질문을 더 잘 설명 할 수있는 코드를 붙여 넣을 수 있습니까? –

답변

0

이 문제는 해결되었습니다. 사실 이것은 처음에 생각한 것처럼 그라데이션 배경과 직접적인 관련이 없었습니다. 대신 테이블보기 및 특히 테이블보기 배경 및 표보기 셀 배경에 색상을 설정하는 방법에 문제가있었습니다. 하지만 이제 해결되었습니다. 문제 종료.