我正在尝试显示星级图像,并且我有三个星级图像:全星、半星和未选择的灰色星。
我有一个包含星星的数组:所以对于 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
所以我认为这不是问题。