2

大家好;

我不确定发生了什么变化以阻止它起作用。在 iOS 3 SDK 上,以下代码在 CATiledLayer 类中运行良好:

- (void)drawInContext:(CGContextRef)context {
    UIImage* image = [[ResourcesManager sharedResourcesManager] getUIImageFromArray:Image_Cell_Background Index:[mazeCell zone]];
    UIColor* color = [[UIColor alloc] initWithPatternImage:image];

    [self setBackgroundColor:[color CGColor]];
    [color release];    

但是,为 iOS 4 编译并在模拟器上执行无法渲染图像。我很困惑,特别是因为作为子层添加的图像渲染得很好。只有背景不渲染。

4

1 回答 1

2

好吧,在花了几天时间之后,我想出了一个解决方法。

首先,我尝试在 UIView 中执行此操作,但仍然遇到同样的问题。然后我尝试了其他类型的具有 backgroundColor 属性的 GUI 组件。

他们都产生了同样的问题。据我所知,这似乎是一个错误,与实施的新图像加载/缓存过程有关,该过程解释是否使用高清或标清图形。

基本上,解决方法是将背景图像加载为子视图或子层(取决于您的实现)并将其发送到后面(层次结构的底部)或在任何其他子视图/子层之前先加载它。

也许是 IOS 3 中的背景图像在视图/图层中执行此操作,并且也许 Apple 决定不对背景图像与子视图/子图层进行双重处理,并删除了对它的支持。

但是,至少您可以将背景设置为一种颜色,甚至是透明的颜色。我已经验证了这一点。

无论如何,请使用此解决方法,直到任何一个苹果解释他们做出此决定的原因或修复 SDK 以便它处理它。我很想知道苹果开发者论坛对这个问题的看法(我确信它已经被提出了)。我还没有参与该计划,因为我仍处于 alpha 阶段,一旦我进入 beta 阶段,我将注册。

于 2010-07-27T03:32:24.050 回答