IOS 이미지 저장 3 가지 방식 의 실현
읽 기 방식:그림 리 소스 폴 더 를 만 들 고 그림 을 프로젝트 에 직접 추가 합 니 다.다음 과 같은 방식 으로 그림 을 읽 습 니 다.
NSString *path = [NSBundle.mainBundle pathForResource:@"xxx" type:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:path];
기능:리 소스 의 이미지 관리 방식 에서 모든 그림 생 성 은 파일 데 이 터 를 읽 어서 얻 을 수 있 습 니 다.파일 데 이 터 를 한 번 읽 으 면 NSData 와 UIImage 가 생 성 됩 니 다.그림 을 만 든 후 해당 NSData 를 삭제 합 니 다.UIImage 의 인용 카운터 가 0 으로 변 할 때 UIImage 를 자동 으로 삭제 합 니 다.그러면 그림 이 메모리 에 장기 적 으로 존재 하지 않도록 보장 할 수 있 습 니 다.장면 사용:이러한 방법의 특성 으로 인해 리 소스 의 방법 은 보통 그림 데이터 가 매우 크 고 그림 은 여러 번 사용 하지 않 아 도 되 는 경우,예 를 들 어 안내 페이지 배경(그림 전체 화면)이다.
장점:그림 은 메모리 에 오래 저장 되 지 않 기 때문에 메모리 낭비 가 많 지 않 습 니 다.이 동시에 큰 그림 은 장기 적 으로 사용 되 지 않 고 큰 그림 이 메모 리 를 차지 하 는 것 이 작은 그림 보다 여러 배 많 기 때문에 큰 그림 의 메모리 점용 을 줄 이 는 과정 에서 리 소스 는 매우 잘 한다.
Bundle 파일 사용
/// BSKDefine.h
// bundle path
#define STBundle_Name @"SafeToolResource.bundle"
#define STBundle_Path [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:STBundle_Name]
#define STBundle [NSBundle bundleWithPath:STBundle_Path]
/// usage
#import "BSKDefine.h"
UIImageView * headerBgImgView = [[UIImageView alloc] init];
headerBgImgView.image = [UIImage imageWithContentsOfFile:[SecKill_BUNDLE pathForResource:@"xxxx" ofType:@"png"]];
UIImage 확장,UIImage+BSKResources 클래스 생 성
/// UIImage+BSKResources.h
NS_ASSUME_NONNULL_BEGIN
@interface UIImage (BSKResources)
+ (UIImage *)bskImageNamed:(NSString *)imageName InBundleName:(NSString *)bundleName;
@end
NS_ASSUME_NONNULL_END
/// UIImage+BSKResources.m
#import "UIImage+BSKResources.h"
@implementation UIImage (BSKResources)
+ (UIImage *)bskImageNamed:(NSString *)imageName InBundleName:(NSString *)bundleName
{
NSString *resourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:bundleName];
NSBundle *resourceBundle = [NSBundle bundleWithPath:resourcePath];
return [UIImage imageNamed:imageName inBundle:resourceBundle compatibleWithTraitCollection:nil];
}
@end
/// usage
#import "UIImage+BSKResources.h"
UIImageView * headerBgImgView = [[UIImageView alloc] init];
headerBgImgView.image = [UIImage bskImageNamed:@"xxx" InBundleName:@"BSKResources.bundle"]];
Bundle 과 xcassets 의 차이이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IOS에서 ReplayKit 및 RTC 사용 방법응용된 소리와 아나운서의 소리를 포함한다.이 두 가지 수요를 감안하여 우리는 스크린 공유를 하는 생방송에 필요한 미디어 흐름을 간단하게 분석할 수 있다. 만약 우리가 Audio App과 Audio Mic를 두 개의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.