Я создаю игру для iOS на Objective-C, и часть этого - возможность открывать новые «корабли». Сейчас у меня их несколько, но мне нужна опция «индивидуальный корабль», когда пользователь выбирает изображение из своей камеры, а затем оно отображается как корабль в игре.
Итак, я хотел бы знать, как выбрать изображение (камера не нужна), а затем сохранить его в папке «Вспомогательные файлы» в приложении, чтобы игра могла его вызвать. Мне также нужно узнать имя файла, чтобы игра могла вызвать правильное изображение.
Любая помощь будет оценена.
я пытался
-(IBAction)chooseFromLibrary:(id)sender
{
UIImagePickerController *imagePickerController= [[UIImagePickerController alloc]init];
[imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
// image picker needs a delegate so we can respond to its messages
[imagePickerController setDelegate:self];
// Place image picker on the screen
[self presentViewController:imagePickerController animated:YES completion:nil];
}
//delegate method will be called after picking photo either from camera or library
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[self dismissViewControllerAnimated:YES completion:nil];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
NSData *dataImage = [[NSData alloc] init];
dataImage = UIImagePNGRepresentation(image);
NSString *stringImage = [dataImage base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
stringImage = customImage;
}
Это слегка измененный код из ответа на this Сообщение на StackOverflow.
customImage - это строка, которая помещается в NSUserDefaults для ее сохранения, как показано здесь:
-(IBAction)enableCustom:(id)sender
{
NSString *playerSprite = customImage;
[[NSUserDefaults standardUserDefaults] setObject:playerSprite forKey:@"playerImage"];
NSString *playerImage = [[NSUserDefaults standardUserDefaults]
stringForKey:@"playerImage"];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wow you unlocked custom" message:@"Fail lol" delegate:self cancelButtonTitle:@"ur mean" otherButtonTitles:@"haha ur an more poor then mi", nil];
[alert show];
}
Итак, предупреждение работает нормально, но когда я пытаюсь поиграть в игру, вместо изображения отображается просто белое поле с большим красным крестиком на нем. Я не совсем уверен, что случилось.
imagePickerController:didFinishPickingMedia:
в порядке. Остальное отключено. Почему вы конвертируете данные PNG изображения в строку? Просто запишите данные в файл. ИспользованиеNSUserDefaults
- плохая идея. Просто запишите изображение в файл. - person rmaddy   schedule 20.03.2015