2011-12-12 4 views
1

최근에 프로젝트 "Demo Photo Board"를 조사한 결과 here이 발견되었습니다.여러 사용자 정의 UIImageViews 저장

이것은 UIIestureRecognizers가 추가 된 UIImageViews를 화면에 추가하는 간단한 데모입니다. 사용자가 다양한 UIImageViews를 조작 할 수 있습니다.

나는과 같이 뷰를 추가

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:imageview] forKey:@"imageViewSaved"]; 

지금 내 질문 : 다음 방법은 저장 마지막 이미지 뷰가 화면에 추가

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 


imageview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)]; 
imageview.userInteractionEnabled = YES; 
[imageview setImage:image]; 

UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)]; 
[pinchRecognizer setDelegate:self]; 
[imageview addGestureRecognizer:pinchRecognizer]; 

UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)]; 
[rotationRecognizer setDelegate:self]; 
[imageview addGestureRecognizer:rotationRecognizer]; 

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; 
[panRecognizer setMinimumNumberOfTouches:1]; 
[panRecognizer setMaximumNumberOfTouches:1]; 
[panRecognizer setDelegate:self]; 
[imageview addGestureRecognizer:panRecognizer]; 


[self.view addSubview:imageview]; } 

나는 심지어 같은보기를 저장할 수 있습니다 . 누구든지 화면에있는 이미지 뷰를 모두 저장하는 법을 알고 있습니다 ... 사용자가 둘 이상의 이미지 뷰를 추가하면 어떻게됩니까?

+0

첫 번째 imageView에서했던 것과 똑같은 작업을 수행 할 수 있습니까? 귀하의 질문을 완전히 이해했는지 확실하지 않습니다. 하나 이상의 이미지를 보관하는 방법을 묻고 있습니까?보기에보기가 추가 되었습니까? –

+0

내가 제공 한 예에서는 사진 라이브러리에서 사진을 선택할 때마다 uiimageview를 화면에 추가 할 수 있습니다. 이 모든 이미지 뷰는 본질적으로 "이미지 뷰"입니다 (위의 코드 참조). 알아내는 데 어려움이있는 것은 이러한 다양한 이미지 뷰를 구별하는 것입니다. 현재는 다른 uiimageviews가 화면에있는 경우에도 추가 된 최신보기 만 저장합니다. 추가 사진이 선택 될 때마다 새로운 uiimageview에서 코드를 작성할 수 있다고 가정하지만, 얼마나 많은 uiimageview가 추가 될 수 있는지에 대한 제한을 두어야합니다. – jccotant

답변

0

나는 전체 UIImageView 개체를 사용자 기본값으로 저장하고 싶지 않을 것이라고 생각합니다. 대신, 훨씬 가벼운 것입니다 UIImage 개체의 목록을 저장해보십시오. (그리고 어떤 직렬화하기 위해 훨씬 더 많은 의미를.)

당신은과 같이이 작업을 수행 할 수 있습니다

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; 
NSArray *savedArray = [defs objectForKey:@"SAVED_IMAGES"]; 
// Create a mutable version in case the serialized copy is an NSArray 
NSMutableArray *mutableImages = savedArray ? [NSMutableArray arrayWithArray:savedArray] : [NSMutableArray array]; 
[mutableImages addObject:image]; 
[defs setObject:mutableImages forKey:@"SAVED_IMAGES"]; 
[defs save]; 
+0

답변 해 주셔서 감사합니다. UIImageView 전체를 사용자 기본값으로 변경하는 것이 맞습니다. 나는 또한 다양한 이미지를 저장하는 더 좋은 방법에 대한 귀하의 모범을 고맙게 생각합니다. 내가 설명하고 싶은 것은 화면에있는 다양한 UIImageviews를 구별 할 수있는 방법입니다. 위에서 제시 한 코드는 사용자가 "imageview"라는 이름으로 여러 개의 UIImageview를 모두 추가 할 수있게합니다. – jccotant

0

는 다음을 수행 할 수있는 화면의 UIImageViews를 구별 할 수 있습니다.

화면에 추가 된 이미지의 수에 대한 인스턴스 VAR 정의 시작 이미지 뷰 태그 번호

#define kImageViewTag 3000 

을 정의합니다. 새있는 UIImageView를 만들 때마다

NSUInteger numberOfImage = 0 

, 수를 증가시키고 kImageViewTag로를 추가하고 태그 속성에 할당합니다. 클래스 태그> = kImageViewTag에있는 UIImageView 인 경우, 화면의 파단을 열거 할 때마다

imageview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)]; 
imageview.userInteractionEnabled = YES; 
[imageview setImage:image]; 
numberOfImage += 1; 
imageView.tag = kImageViewTag + numberOfImage; 

, 당신은 사람들은 이미지가 UIImagePickerController를에서 화면에 추가 알고 있습니다.

관련 문제