TTImageView sizeToFit обнуляет размер кадра, но по-прежнему отображает изображение - PullRequest
0 голосов
/ 19 марта 2011

Я использую TTImageView (из трех20) для отображения изображения из Интернета.

self.pic = [[TTImageView alloc] initWithFrame:CGRectMake(25, 25, 100, 100)]; 
self.pic.urlPath = @"http://www.google.com/images/logos/ps_logo2.png";
[self.pic sizeToFit];
NSLog(@"%f %f %f %f", self.pic.frame.origin.x, self.pic.frame.origin.y, self.pic.frame.size.width, self.pic.frame.size.height);

изображение загружается и отображается идеально, но NSLog возвращает «25,000000 25,000000 0,000000 0,000000».Как я могу получить это, чтобы вернуть правильный кадр?

1 Ответ

0 голосов
/ 19 марта 2011

Прошло много времени с тех пор, как я использовал TTImageView, но я думаю, что происходит следующее:

  1. Вы просите TTImageView загрузить новое изображение с URL
  2. Сразу же после того, как вы задали путь к URL, вы вызываете sizeTo Fit
  3. ... но изображение на самом деле еще не было загружено, поэтому фрейм установлен на ноль, потому что в это время изображение не существует

TTImageView будет загружаться асинхронно, то есть в фоновом режиме. Вам необходимо использовать функцию делегата TTImageViewDelegate (задокументировано здесь ), чтобы получить обратный вызов после завершения загрузки изображения, после чего вам следует вызвать sizeToFit.

В настоящее время вы запускаете запрос на загрузку изображения - процесс, который может занять несколько секунд в 3G и все еще довольно много времени в Wi-Fi, а затем следующая строка просит изменить размер кадра. Вам нужно позвонить sizeToFit после того, как вы убедитесь, что загрузка изображения завершена, для этого и предназначены методы делегата.

...