【问题标题】:Check if UIImageView's image has been changed检查 ImageView 图像是否已更改
【发布时间】:2010-11-23 15:47:53
【问题描述】:

好的,所以我有一个问题,我需要检查用户是否更改了里面的图像和 imageView。如果不是,那么应用程序不需要重新保存一堆东西并且它被更改然后它应该保存。所以基本上这只是为了优化代码,因为保存时我正在将四个图像(loRes、loResThumb、hiRes 和 hiResthumb)写入磁盘,这需要一点时间。

我想我可以尝试在用户进入编辑模式时将图像保存为 NSDATA,然后当用户退出时,检查 UIIMageView 中包含的 NSDATA 是否与我之前临时保存的相同。这会起作用还是他们的更好方法,比如检查 UIImagePicker 是否已被调用(不一定意味着图像已更改,但至少比每次都保存更接近)。

感谢任何提示。谢谢!

【问题讨论】:

  • 您是否从预设的默认图像开始,您知道每次都相同?
  • 没有。用户可以将图像更改为他或她想要的任何图像,然后将其保存到磁盘,然后在再次查看特定页面时从磁盘中抓取并插入到 UIImageView 中。所以我需要知道用户是否更改了显示的图像,无论之前有什么图像。有意义吗?
  • 好的,所以我尝试了这个: 这是在加载视图时设置的: self.oldWishImage = UIImagePNGRepresentation(self.theImageView.image);然后这是用户保存他或她的更改的时间: NSData *currentImage = UIImagePNGRepresentation(self.theImageView.image); if ([self.oldWishImage isEqualToData:currentImage]) { NSLog(@"same picture"); } else NSLog(@"新图片");似乎工作......有什么想法吗?

标签: iphone uiimageview uiimagepickercontroller


【解决方案1】:

如果设置了image,请尝试创建一个“标记”脏值的 UIImageView 子类。

@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

【讨论】:

    猜你喜欢
    • 2013-06-14
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多