0

我正在尝试显示星级图像,并且我有三个星级图像:全星、半星和未选择的灰色星。

我有一个包含星星的数组:所以对于 4.5 的评级,它将包含 4 个选中和 1 个半数。我将相同的星形对象添加到数组中,这样我就不必创建多个星形实例。我只有三个实例,在我的计算中,我只是addObject在这三个不同的图像上使用如下:

for (int i = 0; i < ratingCount; i++) {
        if (rating >= 1)
            [self.imageViews addObject:self.selected];
        else
            [self.imageViews addObject:self.halfSelected];
        rating--;
}

我在绘制这些图像时遇到问题。在随后的循环中,我试图将它们绘制如下:

for (int i = 0; i < self.imageViews.count; ++i) {
        UIImageView *imageView = [self.imageViews objectAtIndex:i];
        imageView.frame = CGRectMake(i * (5 + imageWidth), 0, imageView.frame.size.width, imageView.frame.size.height);
        [self.view addSubview:imageView];
    }

这崩溃imageView.frame了,因为它是空的。当我调试它时,它会打印出 null <0x00000000>。为什么框架显示为空?图像没有打印为空,我知道它们已正确添加到数组中。

删除 imageView.frame 时,我还得到一个[UIImage superview]: unrecognized selector sent to instance 0x8644590

imageNamed使用该方法实例化图像init。这会引起问题吗?他们会提前分配吗?尝试在调试器中查看图像时应该打印 null ,po所以我认为这不是问题。

4

1 回答 1

2

您将 aUIImage与 a混淆了UIImageView。您的数组包含没有框架的图像,因为它们不是视图。

您需要一组单独的图像视图,其中分配有图像。

于 2013-01-02T11:06:11.230 回答