Ich ändere setSelectionIndicatorImage
und wenn ich App auf iOS 8 ausführen, bekomme ich Abstand zwischen Bild und reguläre Breite von tabBar
. Gibt es eine Möglichkeit, die Höhe der Tableiste mit setSelectionIndicatorImage
abzustimmen? Außerdem erhalte ich einen Rand von wenigen Pixeln auf der linken Seite des ersten Tabs und auf der rechten Seite des letzten Tabs, und ich muss diesen auch mit Bild abdecken, wenn Tab ausgewählt ist.UITabBar Auswahl Indikator Bild nimmt nicht die gesamte Größe der TabBar Höhe in ObjectiveC
6
A
Antwort
0
Dies sollte Sie das Kennzeichen Bild, das Sie benötigen jedoch anpassen helfen. Sie legen im Interface-Builder die Klasse der Registerkartenleiste auf diese Klasse fest
class MyCustomTabBar: UITabBar
{
var didInit = false
override func layoutSubviews()
{
super.layoutSubviews()
if didInit == false
{
didInit = true
for subview in subviews {
// can't hookup to subviews, so do layer.sublayers
subview.layer.addObserver(self, forKeyPath: "sublayers", options: .New, context: nil)
}
}
}
deinit
{
for subview in subviews
{
subview.layer.removeObserver(self, forKeyPath: "sublayers")
}
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>)
{
// layer.delegate is usually the parent view
if let l = object as? CALayer, tbButton = l.delegate as? UIView where tbButton.window != nil
{
for v in tbButton.subviews
{
if String(v.dynamicType) == "UITabBarSelectionIndicatorView" {
// do whatever needed with v, this is your indicator view
}
}
}
}
}
2
auf didFinishLaunchingWithOptions setzen diesen Code:
UITabBarController *tabBarContr = (UITabBarController *)self.window.rootViewController;
CGFloat tabBarItemWidth = self.window.rootViewController.view.bounds.size.width/tabBarContr.tabBar.items.count;
CGFloat tabBarItemHeight = CGRectGetHeight(tabBarContr.tabBar.frame);
UIView *selectedBottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tabBarItemWidth, tabBarItemHeight)];
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.colors = [NSArray arrayWithObjects:
(id)[UIColor blueButton].CGColor,
(id)[UIColor colorWithRed:0.08 green:0.54 blue:1 alpha:1].CGColor,
nil];
gradient.frame = selectedBottomView.bounds;
[selectedBottomView.layer insertSublayer:gradient atIndex:0];
UIGraphicsBeginImageContext(selectedBottomView.bounds.size);
[selectedBottomView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
tabBarContr.tabBar.selectionIndicatorImage = image;
tabBarContr.tabBar.translucent = YES;
tabBarContr.tabBar.tintColor = [UIColor whiteColor];
Hinweis: Nehmen Sie Imageview statt Steigung
Bitte fügen Sie das geänderte und gewünschte Bild hinzu. Füge auch deinen Code hinzu. – Rajesh
Überprüfen Sie auch dieses Tutorial. Es kann hilfreich sein. http://blog.erikvdwal.nl/customizing-the-uitabbar-in-ios-5-and-ios-6/ – Rajesh
Bitte beachten Sie die richtige Bildgröße für ausgewählte/abgewählte Tabbar Bilder. https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html – Meet