0

好的,所以我总共有 5 个自定义图像。这是我需要将每个图像设置为的值:

Image1 = 1
Image2 = 2
Image3 = 3
Image4 = 4
Image5 = 5

我需要分配给这些值的值,因为我想让 xcode 将它们随机放置在视图上,直到它达到 50 的值。所以我假设我需要某种循环来将这些值相加直到达到 50?

如何为这些图像分配值,因为它在尝试将 int 值分配给 UIImage 时会发出警告。另外,在旁注中,我将使用什么方法将图像随机放置在视图上而不重叠?

感谢您的任何帮助!

4

3 回答 3

3

您的应用程序将放置UIImageViews,而不是UIImages 到视图上。像所有UIView子类一样,UIImageView有一个NSInteger tag属性,但是如果我正确理解了这个问题,我认为你也不需要那个。

// add count randomly selected images to random positions on self.view
// (assumes self is a kind of UIViewController)
- (void)placeRandomImages:(NSInteger)count {

    for (NSInteger i=0; i<count; ++i) {
        UIImage *image = [self randomImage];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
        imageView.frame = [self randomFrameForImage:image];
        [self.view addSubview:imageView];

        // add a tag here, if you want, but I'm not sure what for
        // imageView.tag = i;
    }
}

// answer a random image from the app's bundle
// assumes the images are named image-x where x = 0..4
- (UIImage *)randomImage {

    NSInteger imageNumber = arc4random() % 5;
    NSString *imageName = [NSString stringWithFormat:@"image-%d", imageNumber];
    return [UIImage imageNamed:imageName];
}

// answer a random position for the passed image, keeping it inside the view bounds
- (CGRect)randomFrameForImage:(UIImage *)image {

    CGFloat imageWidth = image.width;
    CGFloat imageHeight = image.height;

    CGFloat maxX = CGRectGetMaxX(self.view.bounds) - imageWidth;
    CGFloat maxY = CGRectGetMaxY(self.view.bounds) - imageHeight;

    // random location, but always inside my view bounds
    CGFloat x = arc4random() % (NSInteger)maxX;
    CGFloat y = arc4random() % (NSInteger)maxY;

    return CGRectMake(x,y,imageWidth,imageHeight);
}
于 2013-10-07T22:54:06.343 回答
2

如果要分配任意整数值,我会使用 UIImageView 上的 tag 属性。

 NSInteger currentTag = 50;
 while (currentTag > 0) {
        UIImageView *imageView = [UIImageView alloc initWithImage:image];
         imageView.tag = currentTag;
         [self.view addSubView:imageView];
         currentTag--;
   }
于 2013-10-07T22:44:40.190 回答
0

将图像放入 NSArray 然后从NSHipster

如何从 NSArray 中选择随机元素

使用 arc4random_uniform(3) 生成一个非空数组范围内的随机数。

if ([array count] > 0) {
  id obj = array[arc4random_uniform([array count])];
}
于 2013-10-07T23:03:51.827 回答