2012-08-15 3 views
0

Mac 및 iPad에서 Safari와 같은 효과를 얻으려는 중이라서 내비게이션 막대와 현재 탭이 하나 있습니다. UINavigationBar/UIToolbar를 UIView 하위 클래스와 병합하여 1로 보이게하려면 어떻게합니까?UIToolbar를 사파리와 같은 다른 객체로 확장하는 방법


답변 :

나는 내 자신의 UIToolbar의 서브 클래스를 생성하고, UIToolbar 해당 색상 내 UIView의 하위 클래스와 같은 색 만들기 위해 drawRect:(CGRect)rect 방법을 사용했다.

- (void)drawRect:(CGRect)rect 
{ 
    // Drawing code 
    //// General Declarations 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    //// Color Declarations 
    UIColor* gradientColor = [UIColor colorWithRed: 0.916 green: 0.916 blue: 0.916 alpha: 1]; 
    UIColor* gradientColor2 = [UIColor colorWithRed: 0.811 green: 0.811 blue: 0.811 alpha: 1]; 

    //// Gradient Declarations 
    NSArray* gradientColors = [NSArray arrayWithObjects: 
           (id)gradientColor.CGColor, 
           (id)gradientColor2.CGColor, nil]; 
    CGFloat gradientLocations[] = {0, 1}; 
    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)gradientColors, gradientLocations); 

    //// Rectangle Drawing 
    UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: CGRectMake(-1, 0, 769, 45)]; 
    CGContextSaveGState(context); 
    [rectanglePath addClip]; 
    CGContextDrawLinearGradient(context, gradient, CGPointMake(383.5, -0), CGPointMake(383.5, 45), 0); 
    CGContextRestoreGState(context); 


    //// Cleanup 
    CGGradientRelease(gradient); 
    CGColorSpaceRelease(colorSpace); 
} 

답변

0

I 내 ​​자신의 UIToolbar 하위 클래스를 만들고 drawRect : (CGRect) rect 메서드를 사용하여 UIToolbar를 해당 색상 인 UIView 하위 클래스와 동일한 색으로 만듭니다.

- (void)drawRect:(CGRect)rect 
{ 
    // Drawing code 
    //// General Declarations 
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    //// Color Declarations 
    UIColor* gradientColor = [UIColor colorWithRed: 0.916 green: 0.916 blue: 0.916 alpha: 1]; 
    UIColor* gradientColor2 = [UIColor colorWithRed: 0.811 green: 0.811 blue: 0.811 alpha: 1]; 

    //// Gradient Declarations 
    NSArray* gradientColors = [NSArray arrayWithObjects: 
           (id)gradientColor.CGColor, 
           (id)gradientColor2.CGColor, nil]; 
    CGFloat gradientLocations[] = {0, 1}; 
    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)gradientColors, gradientLocations); 

    //// Rectangle Drawing 
    UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: CGRectMake(-1, 0, 769, 45)]; 
    CGContextSaveGState(context); 
    [rectanglePath addClip]; 
    CGContextDrawLinearGradient(context, gradient, CGPointMake(383.5, -0), CGPointMake(383.5, 45), 0); 
    CGContextRestoreGState(context); 


    //// Cleanup 
    CGGradientRelease(gradient); 
    CGColorSpaceRelease(colorSpace); 
} 
0

맞춤 설정이 가능한 맞춤 컨트롤입니다. 신축성있는 UIImages와 함께 UIImageViews를 사용하고 PNG 이미지로 GUI를 다시 만듭니다. 또는 코어 그래픽을 사용하여 탭의 모양을 렌더링하십시오. (PaintCode 도움이 될 수 있습니다).

+0

예 제가 직접 페인트 코드를 만들었으므로 신축성있는 이미지로 탭을 만들었으므로 탭을 만들 수 있습니다. 나는 그렇게 잘 만들지 않겠습니까? 그들도 uibarbuttonitems를 가지고 있기 때문에 같은 방식으로 추가하지 않도록 코딩해야 할 것입니다. – Maximilian

+0

단추가있는 탐색 모음 아래에 탭 막대를 놓기 만하면됩니다. – DrummerB

+0

나는 탭이 이미있다. P는 완료되었다. 그냥 같은 색으로 병합하는 법을 알아야한다. 색을 뽑아내는 도구를 시도해보고 색을 겹쳐서 사용한다. – Maximilian

관련 문제