최근에 우리의 응용 프로그램은 이미지 가져 오기 로직에서 클라이언트가 크기 (이미지가 서버에서 동적으로 빌드 됨)를 요청해야하는 등 교체가 필요합니다.iOS 크기를 지정하는 URL에서 이미지로드
이미지 URL의 형식은 다음과 같습니다 사용자 정의보기의 대부분은 다음과 같은 패턴으로 내장되어 http://image.server.url/path?width={{width}}&height={{height}}
:
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
// do some initializations
}
return self;
}
- (void)setImageURL:(NSURL *)URL {
// do image fetching
}
그리고는 다음과 같이 인스턴스화 :
SomeView *view = [[SomeView alloc] init];
view.imageURL = [NSURL URLWithString:@"..."];
[self addSubview:view];
이 (모든 이미지의 크기가 정적이기 때문에) 문제가 아니었지만 동적 크기를 갖는 이미지를 요청하는 것이 불가능할 때 이미지 페치 -layoutSubviews
이 호출되기 전에 ng가 실행되면 대상 이미지 컨테이너의 크기는 항상 0입니다.
레이아웃이 완료되면 (이미지 컨테이너의 관찰자를 사용하여) 타이밍을 알아 내야하거나 모든 이미지 컨테이너에 대해 정적 크기를 가져야합니다.
가장 적합한 해결책은 무엇입니까?
최상의 솔루션은 비동기 적으로 네트워크 자산을로드하는 것입니다. 일단 다운로드가 완료되면 UI를 "정말 실제적인 것"으로 업데이트합니다. 실제로 이것은 네트워크 자산이로드되는 동안 애니메이션 진행 그래픽 ("loading! wait!") 또는 자리 표시 자 자산 (실제 그래픽을 가져 오는 동안 저해상도 그래픽)을 표시 함을 의미합니다. – xaphod