我在NSArray中存储了10张图像。 在UIViewController中,我放置了6个UIImageView,并在.h文件中给出了插座。
我需要从阵列中选择任何6个图像怎么办? 并且需要在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];
}];
}
<。>文件中的
#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;
答案 0 :(得分:1)
假设(由于问题不明确),您希望将随机图像设置为图像数组中的图像视图。这里的挑战是从数组中找到随机图像,非重复的。
我没有测试过代码,但是这样的代码应该可以运行:
- (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];
}];
}
如果您没有在课程中再次使用图像数组声明,则可以从头文件中删除它们。
答案 1 :(得分:0)
FOR SWIFT
class ViewController: UIViewController {
//array with ImageView
@IBOutlet var imageViews: [UIImageView]!
//array with Image
lazy var imagesArray = [UIImage]()
override func viewDidLoad() {
super.viewDidLoad()
//initiate image
let imageOne :UIImage = #imageLiteral(resourceName: "exchange")
let imageTwo :UIImage = #imageLiteral(resourceName: "indexPhone")
let imageThree :UIImage = #imageLiteral(resourceName: "indexCheer")
let imageFour :UIImage = #imageLiteral(resourceName: "indexTrade")
let imageFive :UIImage = #imageLiteral(resourceName: "indexWashMachine")
//add image to array
imagesArray = [imageOne,imageTwo,imageThree,imageFour,imageFive]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//Action for Button
@IBAction func randomSelect(_ sender: Any) {
//temporary array for images
var tempImageArray = imagesArray
for imageView in imageViews{
// get random index for array images
let index = Int(arc4random_uniform(UInt32(tempImageArray.count)))
// set random image for ImageView
imageView.image = tempImageArray[index]
// remove arleady added Image from temporary array
tempImageArray.remove(at: index)
}
}
}
FOR OBJECTIVE-C
@interface ViewController ()
//array with ImageView
@property (strong, nonatomic) IBOutletCollection(UIImageView) NSArray *imageViews;
//array with Image
@property (strong, nonatomic) NSArray* imagesArray;
- (IBAction)randomSelect:(id)sender;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//initiate image
UIImage *imageOne = [UIImage imageNamed:@"exchange"];
UIImage *imageTwo = [UIImage imageNamed:@"indexCheer"];
UIImage *imageThree = [UIImage imageNamed:@"indexPhone"];
UIImage *imageFour = [UIImage imageNamed:@"indexTrade"];
UIImage *imageFive = [UIImage imageNamed:@"indexWashMachine"];
//Initiate array with image
self.imagesArray = [NSArray arrayWithObjects:imageOne,imageTwo,imageThree,imageFour,imageFive, nil];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)randomSelect:(id)sender {
//temporary array for images
NSMutableArray* tempImageArray = [[NSMutableArray alloc]initWithArray:self.imagesArray];
for (UIImageView* imageView in self.imageViews){
// get random index for array images
int index = arc4random()%(tempImageArray.count-1);
// set random image for ImageView
imageView.image = [tempImageArray objectAtIndex:index];
// remove arleady added Image from temporary array
[tempImageArray removeObjectAtIndex:index];
}
}