iPhone iOS, wie neu UINavigationBar auf Nachfrage?

Habe ich code ändert die Farbe der navigation bar mit Aussehen-Attributen. Ich möchte das ändern, um die navbar Farbe sofort sichtbar. Aber ich kann nicht finden, eine richtige Aufruf zu machen, neu zu zeichnen, die navbar. Derzeit ist es die Farbe ändert, wenn ich drücken Sie eine modale navigation-controller, also über die navbar.

Funktioniert nicht:

AppDelegate* appDelegate = ((AppDelegate*)[[UIApplication sharedApplication] delegate]);

    [appDelegate.window setNeedsDisplay];

Ich habe auch versucht, Fragen, die verschiedene Instanzen der navigation-controller neu zu zeichnen, Ihre Ansichten, die nicht funktioniert.

Was ist die richtige Art zu Fragen, die UINavigationBar neu zu zeichnen, selbst auf Nachfrage?

Danke!

UPDATE: Hier ist der code, der funktioniert!

    - (UIColor *) colorOfPoint:(CGPoint)point
    {
        unsigned char pixel[4] = {0};
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        CGContextRef context = CGBitmapContextCreate(pixel, 1, 1, 8, 4, colorSpace, kCGImageAlphaPremultipliedLast);

        CGContextTranslateCTM(context, -point.x, -point.y);

        [self.view.layer renderInContext:context];

        CGContextRelease(context);
        CGColorSpaceRelease(colorSpace);

        NSLog(@"pixel: %d %d %d %d", pixel[0], pixel[1], pixel[2], pixel[3]);
        float red = pixel[0]/255.0;
        float green = pixel[1]/255.0;
        float blue = pixel[2]/255.0;
        float alpha = pixel[3]/255.0;
        UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:alpha];

        [[NSUserDefaults standardUserDefaults] setFloat:red forKey:@"navBarRed"];
        [[NSUserDefaults standardUserDefaults] setFloat:green forKey:@"navBarGreen"];
        [[NSUserDefaults standardUserDefaults] setFloat:blue forKey:@"navBarBlue"];    
        [[NSUserDefaults standardUserDefaults] setFloat:alpha forKey:@"navBarAlpha"];



        return color;
    }





  - (IBAction)handleTapFrom:(id)sender {

        if([sender isKindOfClass:[UITapGestureRecognizer class]])
        {


            CGPoint location = [tapGestureRecognizer locationInView:self.view];

            //remember color preferences
         UIColor* navbarColor =  [self colorOfPoint:location];
            selectColorView.center = location;

            //UPDATE THE NAVBAR COLOR CODE HERE

    //this does not update immediately 
        float navBarRed = [[NSUserDefaults standardUserDefaults] floatForKey:@"navBarRed"];
        float navBarGreen = [[NSUserDefaults standardUserDefaults] floatForKey:@"navBarGreen"];    
        float navBarBlue = [[NSUserDefaults standardUserDefaults] floatForKey:@"navBarBlue"];
        float navBarAlpha = [[NSUserDefaults standardUserDefaults] floatForKey:@"navBarAlpha"];

       UIColor* navBarColor =  [UIColor colorWithRed:navBarRed green:navBarGreen blue:navBarBlue alpha:navBarAlpha];


//set the color of all newly created navbars
        [[UINavigationBar appearance] setTintColor:navBarColor];  
        [[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
        [[UINavigationBar appearance] setAlpha:0.7];


        //update the toolbar appearance
        [[UIToolbar appearance] setTintColor:navBarColor];

//set the color of the current navbar, displaying immediate change
self.navigationController.navigationBar.tintColor = navbarColor;



        }



    }
Haben Sie versucht [myNavigationController.navigationBar setNeedsDisplay];
Wenn Sie möchten, neu zu zeichnen Sie Ihre Navigationsleiste??
Ist es überhaupt die richtige navigation-controller oder ist das schob controller nav bar eingestellt? Können Sie nach Ihrem code, wo Sie die Navigationsleiste ist Farbe?—das wäre mehr relevant.
Mein root-navigation-controller kommt von einem storyboard, der code, die Sie vorgeschlagen, funktioniert nicht.

InformationsquelleAutor Alex Stone | 2012-02-28

Schreibe einen Kommentar