Iphone 子类UIImageView在图像上存储额外数据
我正在构建一个允许用户拖动UIImageView的应用程序。如果将两个UIImageView拖动到同一个“段”,则需要将拖动到该段的第一个UIImageView返回到其起始位置。我将按需编程创建UIImageViewIphone 子类UIImageView在图像上存储额外数据,iphone,ios,objective-c,Iphone,Ios,Objective C,我正在构建一个允许用户拖动UIImageView的应用程序。如果将两个UIImageView拖动到同一个“段”,则需要将拖动到该段的第一个UIImageView返回到其起始位置。我将按需编程创建UIImageView 我应该将UIImageView子类化以创建一种存储UIImageView原始起始位置的方法,以便在需要时将其返回到起始位置,还是有更好的方法来实现这一点?我认为子类是一种好方法 像这样的东西应该可以完成这项工作: @interface ImageViewWithStartPosit
我应该将UIImageView子类化以创建一种存储UIImageView原始起始位置的方法,以便在需要时将其返回到起始位置,还是有更好的方法来实现这一点?我认为子类是一种好方法 像这样的东西应该可以完成这项工作:
@interface ImageViewWithStartPosition : UIImageView
@property (nonatomic) CGPoint startPosition;
- (void)returnToStartPosition;
@end
您还可以创建一个类别和,但如果子类化是一个选项,我建议您不要这样做。例如,如果您想在UIViewController中保留此类信息,解决方案可以是启动协调的NSMutableDictionary 您可以使用从图像视图的散列创建的密钥保存封装到NSValue中的起始CGPoint 大概是这样的:
// Save origin of image view to NSMutableDictionary with key created from UIImageView's hash
CGPoint point = imageView.frame.origin;
[mutableDictionary setObject:[NSValue valueWithCGPoint:point] forKey:@([imageView hash])];
// Retrieve previous coordinations of image view from NSMutableDictionary by UIImageView's hash
NSValue *originalCoordsValue = [mutableDictionary objectForKey:@([imageView hash])];
if(originalCoordsValue) {
// I have previous origin of the image view
CGPoint originalPoint = [originalCoordsValue CGPointValue];
// Do whatever you want with previous coordinations
NSLog(@"Original point: %@", NSStringFromCGPoint(originalPoint));
}
最好的解决方案往往是意见的问题,所以我不是说这是最好的。你自己决定:-