0

我的 ViewController 创建了 60 个小 UIView。每个都需要相同 jpg 的 UIImage(在 UIImageView 中使用)。

我的理论是,与其每个 UIView 创建自己的 UIImage,不如重用一个在 ViewController 中定义的 UIImage。

视图控制器代码:

UIImage *reuseableUIImage = [UIImage imageNamed:@"LittlePicture.jpg"];

for (i=0; i<60; i++){
    [arrayOfUIViews addObject:[[myUIViewMaker alloc] init...]];
}

我的理论错了吗?我应该继续在每个 UIView 中创建 UIImage 吗?

如果我的理论很好,我的 UIViews 如何定位父 ViewController 的 UIImage? 我不知道语法。为了说明(很糟糕),UIView 中的代码将是这样的:

finalUIImageView = [[UIImageView alloc] initWithImage:self.parentViewController.reuseableUIImage];
4

1 回答 1

2

您的代码看起来不错,应该可以正常工作。您需要在 viewController 上定义一个属性来保存 UIImage。

您将从中获得的主要好处是加载图像的时间只会发生一次。如果您为每个视图分配并初始化图像,则每次都必须加载图像。

编辑:

再想一想,最好的方法是在初始化时将图像传递到您的子视图中。

UIImage *reuseableUIImage = [UIImage imageNamed:@"LittlePicture.jpg"];

for (i=0; i<60; i++){
    [arrayOfUIViews addObject:[[myUIViewMaker alloc] initWithImage:reusableUIImage]];
}

您的 myUIViewMaker 类中的 init 方法将实现为:

-(id)initWithImage:(UIImage *)image
{
    self = [super init];
    if (self) {
        finalUIImageView = [[UIImageView alloc] initWithImage:image];  
    }
    return self;
}
于 2012-07-19T10:24:58.367 回答