目标c-如何用一组重新生成的图像初始化NSArray



编辑:我想我问了一些非常错误的问题,很抱歉。我正在做的是一个模拟老虎机的游戏,但我不认为在UIPICKERVIEW中放入250(50*5)个图像是明智的(只是不想侮辱我自己),这样做是没有理由的,我现在的想法是按不同的顺序只为每列使用6个图像,然后当我旋转时,就在30(6*5)图像上一遍又一遍地旋转它们,这将在使用更少资源的情况下产生同样的效果,对吧?我看不出我在想什么,感谢大家的回答

在iOS中实现复杂的UIPickerView(5个组件),我陷入了这个问题。。。

我有5个NSArray(用于选择器中的每个组件……不可变),我有6个图像。

我需要用一组图像初始化每个阵列,这将在阵列中填充50个图像,一组接一组(我猜是某种for循环,它将运行8次,并在最后用2个以上的图像填充阵列?)

在每个阵列中,图像都需要按不同的顺序排列,但同样,对于同一阵列,图像集必须始终相同。

当我说一个集合时,我的意思是我需要一次又一次地把图像按相同的顺序排列,而不是说它们在另一个数组或类似的东西中。。。。

有人能帮忙吗?

10x,Erez

不确定我是否理解这个问题,但是,如果我理解了,你可以这样做:

NSArray *set = [NSArray arrayWithObjects:[UIImage imageNamed:@"img1.png"],/* all the images */ , nil];
NSMutableArray *tmp = [[NSMutableArray alloc] init];

for (int i = 0; i<50; i++) {
    [tmp addObject:[set objectAtIndex:(i%6)]];
}

然后你可以使用tmp作为普通的NSArray,或者做一些类似的事情

NSArray *result = [NSArray arrayWithArray:tmp];

ps。完成后不要忘记发布tmp。

UIImage        *image;
int             randomIndex;
NSCountedSet   *set    = [[NSCountedSet alloc] initWithCapacity:50];
NSMutableArray *arrays = [[NSMutableArray alloc] initWithCapacity:5];
for ( int i = 0; i < 5; i++ ) {
    while ( [set count] < 50 ) {
        randomIndex = arc4random() % 6;
        image = [images objectAtIndex:randomIndex];
        switch ( [set count] ) {
            case 48:
            case 49:
                if ( [set countForObject:image] < 9 ) {
                    [set addObject:image];
                }
                break;
            default:
                if ( [set countForObject:image] < 8 ) {
                    [set addObject:image];
                }
        }
    }
    [arrays addObject:[set allObjects]];
    [set removeAllObjects];
}
[set release];

我们的想法是使用一个计数集,并获得添加到其中的元素的计数。这样我们就可以跟踪添加的对象。

最新更新