Iphone 如何给每个按钮一个不同的图像?
我有一个应用程序,你有3个按钮,如果你按下一个按钮,三个按钮的按钮图像会改变,但按钮2和按钮3可能与按钮1的图片不同,按钮3可能与按钮2的图片不同 我试过这个,但没用Iphone 如何给每个按钮一个不同的图像?,iphone,objective-c,image,Iphone,Objective C,Image,我有一个应用程序,你有3个按钮,如果你按下一个按钮,三个按钮的按钮图像会改变,但按钮2和按钮3可能与按钮1的图片不同,按钮3可能与按钮2的图片不同 我试过这个,但没用 NSInteger imageIndex1 = arc4random_uniform(images.count); NSInteger imageIndex2 = arc4random_uniform(images.count); NSInteger imageIndex3 = arc4r
NSInteger imageIndex1 = arc4random_uniform(images.count);
NSInteger imageIndex2 = arc4random_uniform(images.count);
NSInteger imageIndex3 = arc4random_uniform(images.count);
if (imageIndex1 == imageIndex2 ) {
imageIndex2 = arc4random_uniform(images.count);
}
else if (imageIndex1 == imageIndex3 ) {
imageIndex3 = arc4random_uniform(images.count);
}
else if (imageIndex2 == imageIndex3 ) {
imageIndex3 = arc4random_uniform(images.count);
}
else
[self.picture1 setImage:images[imageIndex1] forState:UIControlStateNormal];
[self.picture2 setImage:images[imageIndex2] forState:UIControlStateNormal];
[self.picture3 setImage:images[imageIndex3] forState:UIControlStateNormal];
imageIndex1 = imageIndex2;
imageIndex1 = imageIndex3;
imageIndex2 = imageIndex3;
在这里,您在else部分中设置了
self.picture1
图像,因此,如果先有任何条件为true,则不会设置self.picture1
图像,因此您面临的这个问题也会为else
部分中的每个按钮添加设置图像的代码,下面的代码
[self.picture1 setImage:images[imageIndex1] forState:UIControlStateNormal];
[self.picture2 setImage:images[imageIndex2] forState:UIControlStateNormal];
[self.picture3 setImage:images[imageIndex3] forState:UIControlStateNormal];
试试这个
if (imageIndex2 == imageIndex1 ) {
imageIndex2 = arc4random_uniform(images.count);
}
if (imageIndex3 == imageIndex1 ) {
imageIndex3 = arc4random_uniform(images.count);
}
[self.picture1 setImage:images[imageIndex1] forState:UIControlStateNormal];
[self.picture2 setImage:images[imageIndex2] forState:UIControlStateNormal];
[self.picture3 setImage:images[imageIndex3] forState:UIControlStateNormal];
imageIndex1 = imageIndex2;
imageInde
x1 = imageIndex3;
试试这个:
NSInteger imageIndex1 = arc4random_uniform(images.count);
NSInteger imageIndex2 = arc4random_uniform(images.count);
NSInteger imageIndex3 = arc4random_uniform(images.count);
while (imageIndex2 == imageIndex1 ) {
imageIndex2 = arc4random_uniform(images.count);
}
while (imageIndex3 == imageIndex1 ) {
imageIndex3 = arc4random_uniform(images.count);
}
[self.picture1 setImage:images[imageIndex1] forState:UIControlStateNormal];
[self.picture2 setImage:images[imageIndex2] forState:UIControlStateNormal];
[self.picture3 setImage:images[imageIndex3] forState:UIControlStateNormal];
我想我找到了解决办法。 下面是代码:
Boolean p1 =true;
Boolean p2 = true;
Boolean p3 = true;
NSInteger imageIndex1 = arc4random_uniform(images.count);
NSInteger imageIndex2 = arc4random_uniform(images.count);
NSInteger imageIndex3 = arc4random_uniform(images.count);
if (imageIndex1 == imageIndex2 ) {
p1 = false;
imageIndex2 = arc4random_uniform(images.count);
}
if(imageIndex1 == imageIndex3 ) {
p2 = false;
imageIndex1 = arc4random_uniform(images.count);
}
if (imageIndex2 == imageIndex3 ) {
p3 = false;
imageIndex3 = arc4random_uniform(images.count);
}
if(p1 == true && p2 == true && p3 == true) {
[self.picture1 setImage:images[imageIndex1] forState:UIControlStateNormal];
[self.picture2 setImage:images[imageIndex2] forState:UIControlStateNormal];
[self.picture3 setImage:images[imageIndex3] forState:UIControlStateNormal];
}
看起来此文件的另一个副本已作为副本关闭。这个问题的答案是:这个问题的目的是随机改变按钮上的图像。但问题是,在图像数组中选择一个随机索引有时会生成当前索引(它是随机的,因此概率为1/array.count)。这里有一种排除给定索引的方法
- (NSUInteger)randomUnsignedLessThan:(NSInteger)max excluding:(NSUInteger)exclude {
NSInteger firstTry = -1;
while (firstTry == exclude) firstTry = arc4random() % max;
return firstTry;
}
注意,这种方法一次调用ARC4Advices,需要1 +n个调用,概率为1 /max ^ n,因此对于低范围和高性能要求,您可能会考虑排除一个索引的不同算法。< /P>而不是<代码>图像[IVIDENTXX2] 和