TabBarItems and setting their image sizes? - ios

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.

Related

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

Xcode IB - Resizable image on UIButton

Is there a way to assign a stretchable image to a UIButton from Xcode's Interface Builder? and not from code? I mean, to set an image and stretch it only on certain parts (like 9-patch for android)
I am using the properties of image, and background and the stretching section of the view but nothing seems to work to stretch the image on the edges I place.
Yes, I think what you are looking for is slicing. In the asset catalog, when you select an image, on the bottom right corner you can find the Show Slicing button. When you click this button Xcode will display the slicing editor. By using it, you can define which parts of an image should stretch and which should stay unchanged.
The editor should display something like this.
You can find another example here

Launch Screen Storyboard with centered image iOS

1 - I want to use a LaunchScreen.storyboard in my app
2 - In this launch screen I need to insert a brand image in center of the screen
Could anyone help me?
The answer by #Jhonsore did not work for me, unfortunately.
Here's what I did to get it working:
!Note This also works for .xib files, which comes with React Native init
Adding the image file
1) Under image.xcassets, right click and choose New Image Set. Create three different sizes of your image (#1x, #2x, #3x) and add the images by dragging them into the slots for 1x, 2x, 3x. For 3x I suggest a size of more than 1200 px.
2) Name the new image set something, for intance: splash
Creating the launch screen
1) Right-click your project, click New File..., and add a Launch Screen.
2) Select your project and under General->App icons and launch images->Launch Screen File select your newly created Launch Screen
3) Open the launch screen
4) Select View Controller Scene->View Controller
5) In the right panel choose Simulated Metrics->Size and change it to Page Sheet
6) In the left panel delete the two text inputs (copyright and project name)
7) Add an Image View by clicking the button shown in the screenshot below and dragging it to the center of the view
8) In the right panel with Image View selected choose View->Content Mode->Aspect Fit. Also add your image by choosing **Image View->Image
10) Go to Size Inspector (ruler icon, see screenshot) and choose a width and a height that looks good (this will scale to other screen sizes).
11) Drag your image into the center of the screen until you see both a horizontal and vertical blue line
12) Lastly, under Autoresizing change the window with the arrows, so it looks like in the screenshot above. All outer arrows should be deselected and all inner arrows selected.
Result
Troubleshooting:
If your images are not showing on the simulator, try restarting it or try select another device.
Bus image Credits: Eliott Van Buggenhout
I got it!
Here is a link with the steps images:
1 - Set launch file in tab > General
2 - Select LaunchScreen.storyboard in Project navigator, check the option "Use as Launch Screen" in file Inspector
3 - Drag and drop an ImageView inside the Views Controller Scene
4 - Select the ImageView added before, change its width and height. I put w x h 200
First, check the box and after change the size value
Click "Add 2 constraints" button
5 - With ImageView selected, change position to centralize it.
First, check the box and after change the size value
Click "Add 2 constraints" button
6 - It is almost done!!!
Now let's resolve Auto Layout Issues, click the button "Resolve Auto Layout Issues" and update frames
7 - It's time to pick out our image
With ImageView selected go to > Atributes Inspector tab and choose the image u want, remenber to remove its extension (it is the trick, because the image may note appear when building the app on real device, happened with me!!!).
8 - So, CMD+R to build and run your app. Voilá!!!!!
I solved it with responsive settings
In Attribute Inspector -> Content Mode -> Aspect Fill
in Size Inspector -> Layout -> Automatice:
Add new constraint -> fill like the image below and click Add 5 constraints
The only workaround that works for me was to add the images outside Images.xcassets folder. After I modified this and rebuilt the app, it worked as expected.
The same issue is happening on the iOS 14 or XCode 12.
从Images.xcassets中将图片移出到文件外面,可以重新构建应用即可。这个为题chu

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"

Force UITabBarItem's image to a specific size

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.

Resources