Von meinem Verständnis, der einzige Weg zu ändern Sie die Farbe der oberen Grenze ist das Hintergrundbild (320x49, mit Pixelzeile oben). Es scheint mir, dass dies der einzige Weg ist (bitte korrigieren Sie mich, wenn ich falsch liege).Wie kann ich die Farbe des oberen UITabBar-Rahmens ändern, indem ich programmgesteuert ein UIImage-Objekt erstelle?
Gibt es eine Möglichkeit, dies ohne mit einer Bilddatei zu tun? Zum Beispiel, jemand hat mir geholfen, die navigationbar unteren Rand zu ändern, indem Sie eine UIImage aus dem Code zu erstellen:
UINavigationBar.appearance().shadowImage = UIImage.colorForNavBar(UIColor.redColor())
extension UIImage {
class func colorForNavBar(color: UIColor) -> UIImage {
let rect = CGRectMake(0.0, 0.0, 1.0, 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
CGContextSetFillColorWithColor(context, color.CGColor)
CGContextFillRect(context, rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
Diese Lösung tatsächlich funktioniert gut; es ändert die Farbe meiner unteren Grenze.
Ich habe versucht, dies auf die TabBar anzuwenden, aber nichts ändert sich überhaupt.
UITabBar.appearance().shadowImage = UIImage.colorForNavBar(.redColor())
Haben Sie beide gesetzt ' shadowImage' und 'backgroundImage'? Wenn Sie nur einen von ihnen einstellen, wird es nicht funktionieren. – Sulthan
@TIMEX Siehe meine Antwort für eine alternative Lösung zur Verwendung eines 'UIImage'. Bei meiner Lösung bleibt die Transluzenz des Balkens erhalten, sodass der Unschärfeeffekt aktiv bleibt. –