New image name for iPhone 5

前端 未结 6 1273
日久生厌
日久生厌 2020-12-08 02:21

With the retina we make images with the @2x in the name. I see where the default image has to be default-568h@2x but this does not seem to be the case for other images. Like

6条回答
  •  暖寄归人
    2020-12-08 03:17

    You can also make category for this just make category as below .

    UIImage+Retina4.h
    #import 
    #import 
     @interface UIImage (Retina4)
     @end
    
    UIImage+Retina4.m
    #import "UIImage+Retina4.h"
    static Method origImageNamedMethod = nil;
    @implementation UIImage (Retina4)
    
    + (void)initialize {
    origImageNamedMethod = class_getClassMethod(self, @selector(imageNamed:));
    method_exchangeImplementations(origImageNamedMethod,
                                   class_getClassMethod(self, @selector(retina4ImageNamed:)));
    }
    + (UIImage *)retina4ImageNamed:(NSString *)imageName {
    // NSLog(@"Loading image named => %@", imageName);
    NSMutableString *imageNameMutable = [imageName mutableCopy];
    NSRange retinaAtSymbol = [imageName rangeOfString:@"@"];
    if (retinaAtSymbol.location != NSNotFound) {
        [imageNameMutable insertString:@"-568h" atIndex:retinaAtSymbol.location];
    } else {
        CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
        if ([UIScreen mainScreen].scale == 2.f && screenHeight == 568.0f) {
            NSRange dot = [imageName rangeOfString:@"."];
            if (dot.location != NSNotFound) {
                [imageNameMutable insertString:@"-568h@2x" atIndex:dot.location];
            } else {
                [imageNameMutable appendString:@"-568h@2x"];
            }
        }
    }
    
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageNameMutable ofType:@"png"];
    if (imagePath) {
        return [UIImage retina4ImageNamed:imageNameMutable];
    } else {
        return [UIImage retina4ImageNamed:imageName];
    }
    return nil;
    }
    
    @end
    

    And you can directly check using import this category as below where you wont to check 568 or normal image

    imgvBackground.image=[UIImage imageNamed:@"bkground_bg"];//image name without extantion
    

提交回复
热议问题