繁体   English   中英

如何允许用户将保存的照片用作我的应用程序中的背景?

[英]How do I allow user to use their saved photo as a background in my app?

在过去几天里,我一直在零散地寻找如何执行此操作的方法,但至今仍未找到任何内容,希望能对您有所帮助。

当前在我的应用程序中,我有5个不同的背景作为项目文件的一部分,并允许用户在它们之间进行选择来设置应用程序背景,以为应用程序提供一些自定义提示。

我想做的是允许用户选择他们保存在设备上的照片,并将其用作我的应用程序的背景,但是在不知道的情况下无法找到操作方法或错过了它(我来自原始的C#背景,因此仍要适应术语和学习语言和IDE带来的所有乐趣。

我想在代码中做的是:

  • 用户单击以使用自己的图像
  • 应用程序打开窗口以浏览图像
  • 用户选择要使用的图像
  • 分配并保存路径(或以某种方式将图像保存在应用程序中)
  • 将imageview设置为该图像

感谢大家为您提供的任何帮助以及花费的时间。 作为iPhone 5.0的FYI Im建筑

在笔尖文件和按钮中制作一个UIImageView并钩住笔尖

在ViewController.h中

     @interface ViewController : UIViewController
        <UIImagePickerControllerDelegate,UINavigationControllerDelegate>
    {
       IBOutlet  UIButton *ChooseFileBtn;
    }

@property (nonatomic,retain) UIImage *userimage;
-(IBAction)getphoto:(id)sender;

在ViewController.m中

 -(IBAction)getphoto:(id)sender {

    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        [self presentViewController:picker animated:YES completion:nil];
    }
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
        [picker dismissViewControllerAnimated:YES completion:nil];
        userimage = [info objectForKey:UIImagePickerControllerOriginalImage];
        imageView.image=userimage;
    }

您可以使用UIImagePickerController从照片库获取图像

-(void)ClickOnsetBG:(id)sender{
    UIImagePickerController *imgpicker = [[UIImagePickerController alloc] init];
    imgpicker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
    imgpicker.delegate=self;

    [self.navigationController presentModalViewController:imgpicker animated:YES];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    [UIView commitAnimations];
}

然后实现委托方法以获取所选图像:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
 {
     UIImage *aImgRecord = [info objectForKey:UIImagePickerControllerOriginalImage];
     [imgpicker dismissModalViewControllerAnimated:YES];
     bgImage.image =aImgRecord;

     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
 NSUserDomainMask, YES);
     NSString *documentsDirectory = [paths objectAtIndex:0];
     NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"custombg.png"];
     NSData *imageData = UIImagePNGRepresentation(aImgRecord);    
     [imageData writeToFile:savedImagePath atomically:NO];
}

该图像将保存在您应用程序的文档目录中。 因此,当您重新打开应用程序时,必须从“此文档目录路径”中设置bgimage。

您也可以使用NSUserDefaults执行此操作

-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info
{
    UIImage *newImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    NSData *imageData = UIImageJPEGRepresentation(newImage, 1);
    [[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"BackgroundImage"];
    [picker dismissViewControllerAnimated:YES completion:^ {
        // If you have used UIImageView
        [self.yourImageViewObject setImage:newImage];
    }];
}

稍后可以通过NSUserDefaults轻松显示图像,例如

UIImage *image = [UIImage imageWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"BackgroundImage"]];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM