Проверьте, было ли изменено изображение UIImageView.

Итак, у меня есть проблема, когда мне нужно проверить, изменил ли пользователь изображение внутри и imageView. Если нет, то приложению не нужно пересохранять кучу вещей, и оно изменено, тогда оно должно сохраниться. Так что в основном это просто оптимизация кода, так как при сохранении я записываю четыре изображения (loRes, loResThumb, hiRes и hiResthumb) на диск, и это занимает некоторое время.

Я подумал, что могу попробовать сделать это, сохранив изображение как NSDATA, когда пользователь входит в режим редактирования, а затем, когда пользователи выходят, проверьте и посмотрите, совпадает ли NSDATA, содержащийся в UIIMageView, с тем, который я временно сохранил ранее. Будет ли это работать или это лучший способ, например, проверить, был ли вызван UIImagePicker (это не обязательно означает, что изображение изменено, но, по крайней мере, оно ближе, чем просто сохранение каждый раз).

Любые советы приветствуются. Спасибо!


person Glitch    schedule 23.11.2010    source источник
comment
Вы начинаете с предустановленного изображения по умолчанию, которое, как вы знаете, будет одинаковым каждый раз?   -  person DerekH    schedule 23.11.2010
comment
Нет. Пользователь может изменить изображение на любое, которое он или она хочет, которое затем сохраняется на диск, а затем захватывается с диска и вставляется в UIImageView при повторном просмотре определенной страницы. Поэтому мне нужно знать, изменил ли пользователь отображаемое изображение, независимо от того, какое изображение было там раньше. Имеет смысл?   -  person Glitch    schedule 23.11.2010
comment
Итак, я попробовал это: это устанавливается при загрузке представления: self.oldWishImage = UIImagePNGRepresentation(self.theImageView.image); И тогда это когда пользователи сохраняют свои изменения: NSData *currentImage = UIImagePNGRepresentation(self.theImageView.image); if ([self.oldWishImage isEqualToData:currentImage]) { NSLog(@same picture); } еще NSLog(@новая картинка); Кажется, работает... есть мысли?   -  person Glitch    schedule 23.11.2010


Ответы (1)


Попробуйте создать подкласс UIImageView, который «помечает» грязное значение, если установлено image.

@interface myImageView : UIImageView {
    BOOL _dirty; // set to NO in init
}

- (BOOL) hasChanged;

@end

@implementation


- (void) setImage: (UIImage *)image
{
    [super setImage:image];
    _dirty = YES;
}

- (BOOL) hasChanged
{
   if (!_dirty) return NO;
   _dirty = NO;
   return YES;
}
@end
person Stephen Furlani    schedule 23.11.2010