imageWithContentofFile 封装图片

来源:互联网 发布:制作音乐图片的软件 编辑:程序博客网 时间:2024/06/15 00:26

-(id) init {

    self = [superinit];

    if (self) {

        CGRect rect_screen = [[UIScreenmainScreen]bounds];

        CGSize size_screen = rect_screen.size;

        CGFloat scale_screen = [UIScreenmainScreen].scale;

        size_screen.width *= scale_screen;

        size_screen.height *= scale_screen;

        if (  CGSizeEqualToSize(size_screen, CGSizeMake(320,480))

            || CGSizeEqualToSize(size_screen,CGSizeMake(480,320))

            || CGSizeEqualToSize(size_screen,CGSizeMake(1024,768))

            || CGSizeEqualToSize(size_screen,CGSizeMake(768,1024))) {

            isRetain =NO;             

        } else {

            isRetain =YES;

        }

        imageDictionary = [[NSMutableDictionaryalloc] initWithCapacity:10];

        [selfperformSelector:@selector(runPerTimes)withObject:nilafterDelay:KAutoReleaseTime]; // 60 秒后释放缓存

    }

    

    returnself;

}


-(void) dealloc{

    if (imageDictionary) {

        [imageDictionaryrelease];

        imageDictionary =nil;

    }

    [superdealloc];

}


- (UIImage *)imageNamed:(NSString *)name{

    NSMutableString* temp = [[NSMutableStringalloc] initWithString:name];

    NSRange range = [temprangeOfString:@"@2x"];

    if (range.length >0 && !isRetain) {//低分辨率下有@2x

        [temp deleteCharactersInRange:range];

    } elseif(range.length ==0 && isRetain){//高分辨率下无@2x

        range = [temp rangeOfString:@"."];

        if (range.length ==0) {

            [temp appendString:@"@2x"];

        } else {

            [temp insertString:@"@2x"atIndex:range.location];

        }

    }

    range = [temp rangeOfString:@"."];//没有后缀

    if (range.length ==0) {

        [temp appendString:@".png"];

    }

    UIImage* image = [imageDictionaryobjectForKey:temp];

    if (image ==nil) {

        NSString *path = [NSStringstringWithFormat:@"%@/%@",

                          [[NSBundlemainBundle] bundlePath],

                          temp];

        image = [[UIImagealloc] initWithContentsOfFile:path];

        if (image) {

            [imageDictionarysetObject:image forKey:temp];

            [image release];

        }

    }


    [temp release];

    return image;

}


-(void) runPerTimes{

    [selfreleaseNotUsedImages];

    [selfperformSelector:@selector(runPerTimes)withObject:nilafterDelay:KAutoReleaseTime];

}


- (void) releaseNotUsedImages{

    NSArray* array = [imageDictionaryallKeys];

    for (int i =0; i < [array count]; i++) {

        NSString* name = [arrayobjectAtIndex:i];

        UIImage* image = [imageDictionaryobjectForKey:name];

        if (image.retainCount <=1) {

            [imageDictionaryremoveObjectForKey:name];

        }

    }

}

0 0
原创粉丝点击