In der Funktion didFinishLaunchingWithOptions meines Anwendungsdelegaten versuche ich, das Aussehen meiner Navigationsleiste anzupassen.Wie setzt man ein undurchsichtiges 1px hohes Schattenbild für eine UINavigationBar?
[UINavigationBar appearance].translucent = NO;
[[UINavigationBar appearance]
setBackgroundImage:[UIImage
imageWithColor:[UIColor whiteColor]
size:CGSizeMake(1.0f, 1.0f)
]
forBarMetrics:UIBarMetricsDefault
];
[UINavigationBar appearance].shadowImage = [UIImage
imageWithColor:[UIColor redColor]
size:CGSizeMake(0.5f, 0.5f)
];
Ich erwarte einen 1px hohen undurchsichtigen roten Schatten. Stattdessen bekomme ich einen 2px großen, durchscheinenden roten Schatten. Wie kann es genau so erscheinen, wie ich es möchte? Ich habe die analogen Aussehen Einstellungen zu UITabBar gemacht. Auf der anderen Seite verhält es sich gut.
Die Kategorie-Funktion, die dynamische Bilder erzeugt wird, wie so definiert:
+ (UIImage*)imageWithColor:(UIColor *)color size:(CGSize)size
{
CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
haben Sie sah in nur einen Schatten auf die CALayer Zugabe? siehe http://stackoverflow.com/questions/805872/how-do-i-draw-a-shadow-under-a-uiview – cmyr
@cmyr '[UINavigationBar Aussehen] .layer.borderWidth = 0.5f; [UINavigationBar Aussehen] .layer.borderColor = [UIColor redColor] .CGColor; 'zeigt nichts unter der Navigationsleiste. – Pwner
hast du die clipsToBounds der Ebene auf NO gesetzt? – cmyr