如何使用objective-c从数组中选择不同的图像 [英] how to select the images differently from array using objective-c

查看:73
本文介绍了如何使用objective-c从数组中选择不同的图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 NSArray 中存储了 10 个图像.在 UIViewController 中,我放置了 6 个 UIImageView,并在 .h 文件中给出了出口.

I have store 10 images in NSArray. In UIViewController i placed 6 UIImageView,and given the outlet in .h file.

我需要从数组中选择任意 6 张图片怎么办?并且需要在UIImageView中显示图片.

I need to select any 6 images from the array how to do? And need to display the images in UIImageView.

- (void)viewDidLoad {
    [super viewDidLoad];
         images=[[NSMutableArray alloc]initWithObjects:[UIImage imageNamed:@"Navarre-Family-Eye-Care-Navarre-Florida-Optometrist-Santa-Christmas-Toy-Safety.jpg"],[UIImage imageNamed:@"Christmas-Wallpapers-HD-Picture.jpg"],[UIImage imageNamed:@"Christmas-Wallpaper-jesus-9413550-1024-768.jpg"],[UIImage imageNamed:@"tree.jpg"],[UIImage imageNamed:@"luxury-christmas-napkins-father-christmas-1635-p.jpg"],[UIImage imageNamed:@"Navarre-Family-Eye-Care-Navarre-Florida-Optometrist-Santa-Christmas-Toy-Safety.jpg"],[UIImage imageNamed:@"Christmas-Wallpapers-HD-Picture.jpg"],[UIImage imageNamed:@"Christmas-Wallpaper-jesus-9413550-1024-768.jpg"],[UIImage imageNamed:@"tree.jpg"],[UIImage imageNamed:@"luxury-christmas-napkins-father-christmas-1635-p.jpg"], nil];

            NSString *dd=[NSString stringWithFormat:@"%@", images];
            NSLog(@"%@",dd);
  }          
    - (void)setImagesForImageViews:(NSArray<UIImageView*>*)viewsArray fromArray:(NSArray<UIImage*>*)imageArray {
        if(images == nil || viewsArray == nil || viewsArray.count > images.count) {
            return; // early return
        }

        NSMutableArray* randomImageArray = [NSMutableArray arrayWithCapacity:viewsArray.count];
        while (randomImageArray.count < viewsArray.count) {
            UIImage* image;
            do {
                NSUInteger random = (NSUInteger)arc4random_uniform(images.count);
                image = [imageArray objectAtIndex:random];
            } while ([randomImageArray containsObject:image]);
            [randomImageArray addObject:image];
        }
        [viewsArray enumerateObjectsUsingBlock:^(UIImageView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            obj.image = [randomImageArray objectAtIndex:idx];
        }];
    }

在 .h 文件中

#import

@interface memory_test : UIViewController
{
    NSMutableArray *images;
}
@property(weak,nonatomic)IBOutlet UIImageView *b1;
@property(weak,nonatomic)IBOutlet UIImageView *b2;
@property(weak,nonatomic)IBOutlet UIImageView  *b3;
@property(weak,nonatomic)IBOutlet UIImageView *b4;
@property(weak,nonatomic)IBOutlet UIImageView  *b5;
@property(weak,nonatomic)IBOutlet UIImageView  *b6;

推荐答案

让我们假设(因为问题不清楚),您想从一组图像中将随机图像设置为 imageviews.这里的挑战是从数组中找到不重复的随机图像.

Lets suppose(as the question is not clear), you want to set random images to imageviews from an array of images. The challenge here is to find the random image, non-repeating, ofcourse from an array.

我还没有测试过代码,但这样的事情应该可以工作:

I haven't tested the code, but something like this should work:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSArray* images = [self imagesArray];
    NSArray* views = [self imageViewsArray];
    [self setRandomImagesForImageViews:views fromArray:images];
}

- (NSArray<UIImage*>*)imagesArray {
    return @[[UIImage imageNamed:@"Navarre-Family-Eye-Care-Navarre-Florida-Optometrist-Santa-Christmas-Toy-Safety.jpg"],[UIImage imageNamed:@"Christmas-Wallpapers-HD-Picture.jpg"],[UIImage imageNamed:@"Christmas-Wallpaper-jesus-9413550-1024-768.jpg"],[UIImage imageNamed:@"tree.jpg"],[UIImage imageNamed:@"luxury-christmas-napkins-father-christmas-1635-p.jpg"],[UIImage imageNamed:@"Navarre-Family-Eye-Care-Navarre-Florida-Optometrist-Santa-Christmas-Toy-Safety.jpg"],[UIImage imageNamed:@"Christmas-Wallpapers-HD-Picture.jpg"],[UIImage imageNamed:@"Christmas-Wallpaper-jesus-9413550-1024-768.jpg"],[UIImage imageNamed:@"tree.jpg"],[UIImage imageNamed:@"luxury-christmas-napkins-father-christmas-1635-p.jpg"]];
}

- (NSArray<UIImageView*>*)imageViewsArray {
    return @[_b1, _b2, _b3, _b4, _b5, _b6];
}

- (void)setRandomImagesForImageViews:(NSArray<UIImageView*>*)viewsArray fromArray:(NSArray<UIImage*>*)imageArray {
    if(imageArray == nil || viewsArray == nil || viewsArray.count > imageArray.count) {
        return; // early return
    }

    NSMutableArray* randomImageArray = [NSMutableArray arrayWithCapacity:viewsArray.count];
    while (randomImageArray.count < viewsArray.count) {
        UIImage* image;
        do {
            NSUInteger random = (NSUInteger)arc4random_uniform(imageArray.count);
            image = [imageArray objectAtIndex:random];
        } while ([randomImageArray containsObject:image]);
        [randomImageArray addObject:image];
    }
    [viewsArray enumerateObjectsUsingBlock:^(UIImageView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        obj.image = [randomImageArray objectAtIndex:idx];
    }];
}

如果您不再在类中使用它,您可以从头文件中删除您的图像数组声明.

You can remove your images array declaration from your header file if you are not using it again in the class.

这篇关于如何使用objective-c从数组中选择不同的图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆