How to change tab bar item text color
I found the answer for my own question.
We can set perforamceItem setTitleTextAttributes:
for two different states.
forState:UIControlStateNormal
forState:UIControlStateHighlighted
I added the following code
[performanceItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaLTStd-Roman" size:10.0f], NSFontAttributeName, [UIColor yellowColor], NSForegroundColorAttributeName,nil] forState:UIControlStateNormal];
[performanceItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaLTStd-Roman" size:10.0f], NSFontAttributeName, [UIColor whiteColor], NSForegroundColorAttributeName,nil] forState:UIControlStateHighlighted];
I need to replace the yellow color with the color of my ICONS. This is how they are looking now.
When More is selected
When Performance is Selected
Change position of UIBarButtonItem in UINavigationBar
There is no particularly good way to do this. Your best bet if you really must is to subclass UINavigationBar, and override layoutSubviews
to call [super layoutSubviews]
and then find and reposition the button's view.
How to adjust space between two UIBarButtonItem in rightBarButtonItems
Updated at Jul 2015
A better way to do this is to use storyboard (tested in Xcode 6.4). First, add a UINavigationItem; secondly, add a Bar Button Item; thirdly, add a view to the Bar Button Item you just created in step 2; fourthly, add as many buttons as you wish into that view you just dragged in; lastly, adjust the space with your mouse and constraints.
Related Questions
Can't assign multiple Buttons to UINavigationItem when using Storyboard with iOS 5
How to add buttons to navigation controller visible after segueing?
Old Answer (Only acceptable for small insets)
Use imageInsets property:
leftButton.imageInsets = UIEdgeInsetsMake(0.0, 0.0, 0, -15);
rightButton.imageInsets = UIEdgeInsetsMake(0.0, -15, 0, 0);
for three or more buttons, the middle one(s) get both insets:
leftButton.imageInsets = UIEdgeInsetsMake(0.0, 0.0, 0, -15);
middleButton.imageInsets = UIEdgeInsetsMake(0.0, -15, 0, -15);
rightButton.imageInsets = UIEdgeInsetsMake(0.0, -15, 0, 0);
For the right side buttons, be careful: the FIRST button in the item array is the RIGHT one:
rightButton.imageInsets = UIEdgeInsetsMake(0.0, -15, 0, 0);
middleButton.imageInsets = UIEdgeInsetsMake(0.0, -15, 0, -15);
leftButton.imageInsets = UIEdgeInsetsMake(0.0, 0.0, 0, -15);
IMPORTANT: Split the inset between the two neighbors; if apply the entire inset to one edge, it will become obvious that the buttons are overlapping in the "blank" space - one button gets all of the "gap" touches. Even when "split" the adjustment like this, at -40 on both edges, the tap will definitely go to wrong button sometimes. -15 or -20 is the most to consider using with this technique.
By applying this method, the button could even be moved around in four directions.
Remove text from Back button keeping the icon
I know this already has an answer, but you can also do it in code (in case you're working with nibs)
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
Add the above in the first view controller.
Note that you need to do this for each view controller that is pushing. So if you have 3 view controllers, and you want to remove the back text from all of them, you'll have to add the line in view controller 1 and 2.
Related Topics
How to Reconnect Akplayer and Akmixer After Audiokit.Stop()
Swiftui Navigationview Not See Image
How to Allow a Generic Collection to Perform Under The Hood Conversion in Swift
Switch Statement Where Value Is Int But Case Can Contain Array
Swiftui: Make Remaining Area of List Item Detect Clicks
Uitableview Didselectrow Returns Wrong Row Index Value
Access Each Header and Controls in The Tableview in Swift
How to Display an Alert Controller When Nsdate == to a Time (For Example 12:00 Am) in Swift
Swift: Benefits of Curry Function
How to Cache Cells and Also Reuse Cells in a Collectionview That Has Avplayers Embedded in Each Cell
Arkit/Scenekit on iOS 14 Throws New Warning (Metal)
Swiftui: Unable to Animate Images
Implement a Crosshair Kind Behaviour in Realitykit
How to Convert an Array to List in Realm
How Do Uniqueness Constraints as (Comma,Separated,Attributes) Work with Swift in Coredata