Ios 如何使用objective-c选择不同于阵列的图像
我在NSArray中存储了10张图像。 在UIViewController中,我放置了6个UIImageView,并在.h文件中给出了出口 我需要从阵列中选择任意6个图像怎么办? 并且需要在UIImageView中显示图像Ios 如何使用objective-c选择不同于阵列的图像,ios,objective-c,nsarray,Ios,Objective C,Nsarray,我在NSArray中存储了10张图像。 在UIViewController中,我放置了6个UIImageView,并在.h文件中给出了出口 我需要从阵列中选择任意6个图像怎么办? 并且需要在UIImageView中显示图像 - (void)viewDidLoad { [super viewDidLoad]; images=[[NSMutableArray alloc]initWithObjects:[UIImage imageNamed:@"Navarre-Family
- (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];
}];
}
让我们假设(因为问题还不清楚),您希望从一组图像中将随机图像设置为ImageView。这里的挑战是从数组中找到随机图像,当然是不重复的
我还没有测试过代码,但类似的东西应该可以工作:
- (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];
}];
}
-(void)viewDidLoad{
[超级视图下载];
NSArray*images=[self-imagesArray];
NSArray*视图=[self-imageViewsArray];
[self-SetRandomImagesPrimageView:来自数组的视图:图像];
}
-(NSArray*)图像sarray{
return@[[UIImage ImageName:@“纳瓦拉家庭眼部护理纳瓦拉佛罗里达验光师圣诞玩具安全.jpg],[UIImage ImageName:@“圣诞墙纸高清图片.jpg”],[UIImage ImageName:@“圣诞墙纸-jesus-9413550-1024-768.jpg],[UIImage ImageName:@“tree.jpg”],[UIImage ImageName:@“luxury-christmas-napkins-father-christmas-1635-p.jpg”],[UIImage ImageName:“纳瓦拉家庭眼部护理”纳瓦拉佛罗里达验光师圣诞玩具安全.jpg],[UIImage ImageName:“圣诞墙纸高清图片.jpg”],[UIImage ImageName:“圣诞墙纸-jesus-9413550-1024-768.jpg”,[UIImage ImageName:“tree.jpg”],[UIImage ImageName:“圣诞墙纸高清图片.jpg”奢侈品-圣诞餐巾纸-圣诞老人-1635-p.jpg“];
}
-(NSArray*)图像视图Sarray{
返回@[_b1、_b2、_b3、_b4、_b5、_b6];
}
-(void)SetRandomImagesFrimageViews:(NSArray*)视图从阵列阵列阵列:(NSArray*)图像阵列{
如果(imageArray==nil | | viewsArray==nil | | | viewsArray.count>imageArray.count){
return;//提前返回
}
NSMutableArray*randomImageArray=[NSMutableArray阵列容量:viewsArray.count];
while(randomImageArray.count
如果不在类中再次使用图像数组声明,则可以从头文件中删除该声明。对于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)
}
}
}
对于目标-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];
}
}
设置任意三个图像?问题不清楚。是否要显示3个随机图像?不清楚您要求的是什么。请说明您做了什么以及您面临的问题。因此,不是为了在5分钟内询问有关我需要如何处理的问题,我正在为obj ci重新制作6 UIImageview,然后如何设置更大的图像计数大于ImageView的计数?如果ImageView大于ImageView,请注释此行“[tempImageArray removeObjectAtIndex:index]“我有6个UIImageview,那么如何设置您可以通过将imageview oulets保存在数组中使其更通用。@蒂娜:更改了代码,您只需要将images数组和imageview数组传递给此函数。如何在view中调用此函数?”load@teena:我想您已经有了图像视图数组。您需要创建一个imageview数组,然后使用imageview数组和ImageArray调用此函数。
@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];
}
}