У меня есть IBOutlet
до UIImageView
под названием attachmentImage
. По умолчанию у него есть изображение заполнителя, добавленное через раскадровку.Невозможно изменить изображение UIImageView
Если изображение уже присутствует, оно отображается с помощью setImageWithURL
. Это работает и отображает изображение. Вызывается из viewDidLoad
[self.attachmentImage setImageWithURL:[NSURL URLWithString:attachmentImageURL]];
self.attachmentImage.contentMode = UIViewContentModeScaleAspectFill;
self.attachmentImage.clipsToBounds = YES;
[attachmentImage setNeedsDisplay];
Если изображение не присутствует его выбирают из библиотеки и добавляется как так;
- (void)takeController:(FDTakeController *)controller gotPhoto:(UIImage *)photo withInfo:(NSDictionary *)info {
[attachmentImage setImage:nil];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
self.attachmentImage.contentMode = UIViewContentModeScaleAspectFill;
[self.attachmentImage setImage:photo];
self.attachmentImage.clipsToBounds = YES;
[attachmentImage setNeedsDisplay];
}
Загрузка выполняется, если изображение уже не добавлено (кроме заполнителя). Но если изображение имеет изображение с setImageWithURL
, изображение не будет заменено.
Почему это происходит? ПОМОГИТЕ!
EDIT Теперь изображение меняется, но возвращается через секунду или два. Это изменение, внесенное мной в функцию setImageWithURL
;
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
attachmentImageURL = [NSString stringWithFormat:@"%@%@", BaseURL, imgpath];
NSURL *url = [NSURL URLWithString:attachmentImageURL];
NSData *data = [NSData dataWithContentsOfURL:url];
if (![data isEqualToData:nil]) {
UIImage *image = [UIImage imageWithData:data];
dispatch_async(dispatch_get_main_queue(), ^{
attachmentImage.image = image;
self.attachmentImage.contentMode = UIViewContentModeScaleAspectFill;
self.attachmentImage.clipsToBounds = YES;
[attachmentImage setNeedsDisplay];
[self applyImageViewConstraints];
});
}
});
So close.
Не могли бы вы лучше объяснить, что хотите, и что у вас на самом деле? И можете ли вы также опубликовать скриншот? – Serluca
Вы получаете изображение с сервера? –
Я думаю, что, возможно, ваш viewDidload был вызван после того, как вы установили новое изображение. Отделите код, который установил образ по умолчанию (в вашем представленииDidload), затем добавьте NSLog(), чтобы знать, когда он вызван. –