模拟器在UIImageView中显示我的图像,但它不在我的真实iPhone上

时间:2014-05-19 13:54:37

标签: ios uiimageview

我已经四处寻找答案,但我找到的答案是说真实设备区分大小写并且我查看了我的代码并且找不到任何问题,

我有2个视图控制器,spViewController这是我的根,我有secondViewController这是自我解释的,两者都有UIImageView来显示相同​​的图像,这是被选中的在模拟器和真实iPhone中使用UIImagePickerController的图库中,图像显示在spViewController's UIImageView上,但在模拟器中secondViewController显示UIImageView显示图像,但在真正的iPhone上,图像不显示

此代码位于我的secondViewController.m

{NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *filepathJPG = [docsPath stringByAppendingPathComponent:@"imagefile.jpg"];

    UIImage *img = [UIImage imageWithContentsOfFile: filepathJPG];
    if (img != nil) {

        _imageView.image = img;


        BOOL adjustToSmallSize = YES;
        CGRect smallSize = (CGRect){0,0,100,100};
        if (adjustToSmallSize) {
            _imageView.bounds = smallSize;
        }

    }

我已经做了一些我自己的测试,我一直在玩文件名和大写和拼写,如果我更改图像无法在模拟器中加载的任何拼写,如果我把它保持为imagefile.jpg然后它加载到模拟器中而不是真正的手机,我已经使用了大写但我的iPhone或模拟器似乎没有任何变化

4 个答案:

答案 0 :(得分:0)

您确定imagefile.JPG是大写的JPG,还是imagefile.jpg?当filepathJPG无法加载此图像文件时,还要检查imageView字符串在运行时保留的内容。

答案 1 :(得分:0)

检查图像名称是否正常

删除/ Library / Developer / Xcode / DerivedData /

中的DerivedData

并在设备中再次运行。

答案 2 :(得分:0)

我只是回顾我的旧项目,这就是我将图像写入完整路径的方式,并从相同的路径中恢复图像: -

    if (self.photoView.image)
    {
        //Image file name
        NSString *filename = [NSString stringWithFormat:@"M%@.png", self.title];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *docDir = [paths objectAtIndex:0];
        NSString *fullPath = [NSString stringWithFormat:@"%@/%@", docDir, filename];

        //Write the Image to the path
        NSData *imageData = UIImagePNGRepresentation(self.photoView.image);
        [imageData writeToFile:fullPath atomically:FALSE];

        //Get the image back from the same path
        UIImage *image = [UIImage imageWithContentsOfFile:fullPath];
    }

我刚刚意识到您忘记了路径的 / 。请确保无论何时编写或阅读路径,都可以。你可以尝试一下,让我知道它是否解决了你的问题?

答案 3 :(得分:0)

为解决我的问题,我做了以下

在我的FVC.m

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

    UIImage *chosenImage = (UIImage *) [info objectForKey:UIImagePickerControllerEditedImage];
    //it returns the edited image

    NSString *mediaType = info[UIImagePickerControllerMediaType];
    self.myImage = chosenImage;


    if ([mediaType isEqualToString:(NSString *)kUTTypeImage])
    {

        UIImage *image = info[UIImagePickerControllerOriginalImage];

        _imageView.image = image;
        if (_newMedia)
        {

        }
        else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
        {

        }
    }

    [self performSelector:@selector(myMethod:) withObject:picker afterDelay:0.5];



}

然后在我的SVC.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    _imageView.image = self.myImage;

希望这对未来的人们有所帮助