If you faces the problem of loading different images for different devices and different orientations, this can help you.
Category uses swizzling and support two types of image loading:
- Programmatically.
- From XIB/Storyboard.
Steps to use:
- Add these categories to your project (for example just drag and drop them to the XCode).
- Load images as usually with
[UIImage imageNamed:@"ImageName"]
. Or set them in XIB/Storyboard
Image names should be in the next format:
<name><orientation><screen_height><scale><device>.<extension>
- <name> -- name of the image. This name you should pass to the
imageNamed:
method. - <orientation> -- can be -landscape, -portrait or missed.
- <screen_height> -- screen height if you want to specify different images for different screen heights. Can be -568h, -667h, -736h or missed.
- <scale> -- image scale factor. Should be written as @2x, @3x, etc. Don't use @1x, just left it empty instead.
- <device> -- can be ~ipad, ~iphone or missed.
- <extension> -- image extension (png, for example).
Passed to imageNamed:
method parameter should be either <name>.<extension> or <name> (in this case extension will be treated as png).
More detailed names have higher priority for loading. For example if there are image@2x~ipad.png and image-portrait@2x~ipad.png, the second one will be chosen for portrait orientation.
You can send me your notes and questions about this source to the email: [email protected].