【问题标题】:UIImageView with iOS 7 not showing upiOS 7 的 UIImageView 未显示
【发布时间】:2013-09-21 19:21:44
【问题描述】:

我有一个我正在为 iOS 6 构建的应用程序,我最近升级到了 iOS 7。我有一个 UIScrollView 和一些自定义 UIViews。在这些UIViews 中,我每个都有一个UIImageView。出于某种原因,当我在 iOS 6 中设置 UIImageView.image 时,它显示得很好,但 iOS 7 不会显示它们。代码如下:

int i = 0;

        for (UIImageView *imageView in myImageViewsOutletCollection)
        {
            imageView.image = nil;
            if (imagesArray.count > i)
                imageView.image = [UIImage imageWithData:[imagesArray objectAtIndex:i]];

            if (imageView.image == nil)
                NSLog(@"signature image with index: %i is nil", i);
                    else
                            NSLog(@"It Worked")

            i++;
        }

我的应用正在记录:@"It Worked",所以我知道UIImageView.image 不是nil。我可能做错了什么?

编辑:

我尝试了 UIImageRenderingMode:

UIImage *imageForView = [UIImage imageWithData:[imagesArray objectAtIndex:i]];
imageForView = [imageForView imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

imageView.image = imageForView;

还是不行。不过,@Max_Power89 说:

正如它在苹果开发者论坛上所写的那样:imageWithData 错误 报告

这一定是一个错误。我希望他们早日解决问题。

编辑 2:

我还添加了这个:

NSData *pngData = UIImagePNGRepresentation(imageView.image);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *docs = [paths objectAtIndex:0];

NSError *writeError = nil;
[pngData writeToFile:[docs stringByAppendingFormat:@"/image.png"] options:NSDataWritingAtomic error:&writeError];
if(writeError!=nil)
{
    NSLog(@"%@: Error saving image: %@", [self class], [writeError localizedDescription]);
}

图像保存在应用程序的目录中,所以我确定图像不是 nil。

【问题讨论】:

  • 记录图像视图的大小
  • @Wain - 框架的 NSLog 为 0,0,320,120 没有问题
  • 我们对此有有效的解决方案吗?我遇到了同样的问题。这也适用于UITableView :(
  • 这似乎是自动布局约束的错误。一旦我调整了约束,它似乎工作正常。玩转约束
  • 我也有同样的问题,你解决了吗?我发现如果我按下主页按钮并返回所有视图,iOS6 就可以了。我确定这是 AutoLayout 的事情。

标签: ios objective-c xcode uiimageview ios7


【解决方案1】:

这是 iOS 7 中自动布局约束的问题/错误。如果您删除 UIView 上的约束,它就没有问题。如果需要,您可以通过编程方式设置框架。

【讨论】:

  • 但有些图片可以显示有限制。真的很奇怪。
【解决方案2】:

在 iOS 7 中,加载图像默认只加载它的 alpha Chanel,并使用细节 tint color 对其进行着色。您的图像正在显示,只是它与背景颜色相同。

- (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode

设置为:

UIImageRenderingModeAlwaysOriginal

【讨论】:

  • 那么,我该如何解决呢? - @Kyle Fang
  • 对不起,我只是猜测。你应该联系链接中的那个人......他说这是一个项目特定的问题。也许他可以帮忙
【解决方案3】:

正如苹果开发者论坛上写的那样:imageWithData bug report

这一定是一个错误。我希望他们早日解决问题。

【讨论】:

  • 嗯,可能就是这样。但是,代码似乎没有返回 nil。
【解决方案4】:

也许这对任何人都有帮助:我遇到了同样的问题 - 至少看起来像这样。最后我发现,一个 UIScrollView 隐藏了一些背景视图层。 UIScrollView-background 在 .xib 文件中设置为“Group Table View Background Color”。如果我将其更改为“清除颜色”,则行为会恢复正常(如在 iOS 6 中)。似乎,该元素的“默认行为”从 iOS6 更改为 7。也许有人能够确认这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-28
    • 2013-01-01
    • 2013-10-07
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多