Force UITabBarItem's image to a specific size - ios

I have a UITabBarController, initialized by a xib file. all it's view controllers are initialized by a xib file as well.
In apple's HIG it is specified that a High-resolution tab bar icon should be approximately 60x60. I have a set of 52x52 icons, and I used them as the image for the tab items. but for some reason, it displays them as if I'm using a none-high resolution screen - they're off the bounds of the tab bar item, and are pixelized.
How can i set a "fixed" size for the icons so this will be avoided, and how can I, using Interface builder, choose different tab bar images for low-resolution and high-resolution screens?Tnx in advance!

What names are you using for these images?
What you usually have to do is have the standard image named xxxx.png and the high resolution retina display image named xxxx#2x.png
When you use these images in interface builder, use the standard image, the system will look for that filename with "#2x" if it's being executed on an iPhone 4.

Related

UITabBarController icons not showing up

I have an app that has a UITabBarController with four view controllers embedded.
I've created icons for both normal and selected states and set them via the interface builder. The sizes of the individual icons vary slightly according to the new design guidelines. Also the icons are PDFs. I initially set it's Render As property to Template Image.
The titles of the tab bar icons show up but not the icons.
But they do show up in the interface builder though.
Then I set the Render As to both Original and Default but neither worked.
I'm using Xcode 10.1. What am I missing here?
It seems problem with image you are using. try setting different insets to image and tab bar icon will appear.
i have set some inset for icon and icon appeared in simulator.so you will need proper icon image for asset or would required proper inset for icons.

UITabBar buttons' images wrong size

I have a UITabBarController.
I added images to the bar buttons. On the ViewController the image size is fine, but on the TabBarController it looks all messed up.
Furthermore, when I fire up the app, and click the tabs - the images change size. I read online that I need to set the inset to be, for example:
Top: 5, Bottom: -5
But then the image isn't the size I want it to be, and it overlaps the text I want it to also have.
See image please.
How do I fix that? I am using Swift.
As per Apple Human Interface Guidelines, Tab Bar Icon size varies for different size glyphs and for portage and landscape mode, refer the guide below and check if the icon size is matching the size given. Make sure to verify #2x and #3x image icon sizes and add them if missing the proper size.
You should set images with correct size - 32x32, because UITabBarController does not fit images automatically.
For resizing images you can use something like this: https://github.com/ymedialabs/UIImageCategories/blob/master/UIImage%2BvImage.swift

UIButton is out of navigation bar

I have a custom UI Button (just regular button but with image), within the navigation bar, but when I choose my image it looks like this in designer:
As you can see here, it's over my provider and status labels, and also when I run application it's over the WebView (which is bellow), so definitely out of navigation bar. I tried to find in storyboard some property where I can adjust this but I couldn't find any. I'm using swift and storyboards.
Appreciate any help, iOS newbie :)
Based on your description I think your issue is that you are trying to add a button for navigation. What you need is a NavigationBar with a NavigationItem/BarButtonItem in it. If you look in the object library you will be able to find these.
Just drag them onto your story board. Once there select the button and in the side menu you will be able to select the Image for that Item. Now it is in the navigation bar up top. Let me know if there are still issues. 👱🏼
You have to make sure your 1x image is to the specified size (and then your 2x etc, or just use a PDF at the 1x size.
Icon sizes are here: iOS Human Interface Guidelines: Icon and Image Sizes
I made my pdf 22x22 and added it to .xcassets with scale factor "single vector"

TabBarItems and setting their image sizes?

I am currently adding images to each one of my tab bar items. One image I like has a size that is much bigger then the area of the bar item. When I set the image of the bar item in the storyboard and run the emulator... the bar button with that image covers the entire screen.
Now I thought there was some automatic way of allowing the images to resize for each bar button. This is sadly not the case. Is there a way when the tab bar loads that I can resize the images within each tab bar?
You should prepare 3 images icons for each tab bar item (1x, 2x and 3x).
First create the 3x at 75w 75h pixels (maximum: 144 x 96) and save it as iconTab0#3x.png.
Then resize it to 50w 50h pixels (maximum: 96 x 64) and save it as iconTab0#2x.png.
Finally resize it to 25w 25h pixels (maximum: 48 x 32) and save it as iconTab0.png.
Now all you need is to select those 3 images at your finder and drag them to your image assets.
Human Interface Guidelines
Another option is to create a vector image PDF. What you do is resize your vector image to the smallest size (22x22) and export it to a PDF file. You can do this with Adobe Illustrator, Sketch and many other vector image editing tools.
Then you add the PDF file to your assets folder and in the Properties Inspector set "Scale Factors" to "Single Vector". That should do it!
Pretty easy to do this with ios8. In Storyboard, click on each tab item (the individual controller for the tab you want to change the image of.
Set the insets accordingly...
There is this issue though. Fixed with this.
#LeoDabus provided a good answer.
For resizing the image, a good and easy way to do this is to:
Add your image to the 1x, 2x, 3x boxes in Assets.xcassets folder.
Then, click on the image in each box and double-finger tap the trackpad/right-click which will reveal the options here:
Click on 'Open with External Editor', which will bring you to Preview.
Click on 'Tools' then 'Adjust Size'.
Adjust the size of your image based on your requirements. Then hit 'Save' and close the window. The image in Xcode should be auto-updated.

Working with autorotation and UINavigationBar images

I have a navigation bar that uses a custom image for the background. Along with some images for buttons UIBarButtonItems.
When the device is rotated the navigation bar height is obviously changed to 32px instead of 44px.
Is it best practice to then make another image to be used for the navigation bar background or create stretchable images instead?
I would create two stretchable images one for retina an one for default devices, it's is best practice to use stretchable images instead of full length images because you decrease the app size and there will be no problems if the device screen size is changed (if the stretchable image is seted properly)

Resources