如何设置图像的值

时间:2013-11-19 19:29:55

标签: image uiimageview

我正在使用switch语句随机填充带有图片的imageviews。 现在我试图给图片一个值。这样我可以使用该值进行比较。有人可以解释一下如何给图像赋值吗?


我使用以下代码为UIImages设置数组,但无法完全正常工作:(。m file)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIImage *image1 = [UIImage imageNamed:@"image-1.png"];
    UIImage *image2 = [UIImage imageNamed:@"image-2.png"];
    UIImage *image3 = [UIImage imageNamed:@"image-3.png"];
    UIImage *image4 = [UIImage imageNamed:@"image-4.png"];
    UIImage *image5 = [UIImage imageNamed:@"image-5.png"];

    _imageArray = @[image1, image2, image3, image4, image5];
}

-(void)displayImageRandomlyOnView {

    NSUInteger randomIndex = arc4random_uniform([_imageArray count]);

    _imageToDisplay.image = [_imageArray objectAtIndex:randomIndex];
}

在.h文件中也创建了一个按钮,用于调用视图...但无法获取调用该视图的按钮的代码。 如果我现在尝试运行IS,即使没有按钮,它也会崩溃。有人能告诉我出了什么问题吗?

以下信息位于.h文件中:(已将按钮退出)

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIImageView *imageToDisplay;
@property (strong, nonatomic) NSArray *imageArray;

这真的很有帮助!我现在创建了一个按钮,它将填充总共10个UiImage视图。在屏幕左侧5,UiImage视图1-5和右侧我有UiImage视图6-10。我创建了两个separe数组来填充右侧和左侧。我现在唯一想做的就是将UiImage视图1-5与6-10进行比较。如果UiImage视图用图像填充它应该返回值1,如果不是,它应该有0.这样我可以比较右侧或左侧是否填充了更多图像或完全相同。你能指出我如何做到这一点的正确方向吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我建议将UIImages存储在一个数组中,随机排序,然后依次用图像填充UIImageViews。这样,您不需要为图像附加值,因为您知道它们在图像视图中的位置在阵列中的位置。

修改

您应该替换

_imageArray = @[image1, image2, image3, image4, image5];

_imageArray = [[NSArray alloc] initWithObjects:image1, image2, image3, image4, image5, nil];

你有什么会在Xcode控制台中导致这样的错误:      *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [__ NSPlaceholderArray initWithObjects:count:]:尝试从对象[0]中插入nil对象

编辑26/11/13

如果你在屏幕上有一个图像列表,并且想要以编程方式检查它们是否加载了图像,我建议使用UIImageViews数组而不是UIImages数组。然后,

// Initialise the 5 UIImageViews with the UIImages that you already initialised.
UIImageView *image1 = [[UIImageView alloc] initWithImage:image1];
UIImageView *image2 = [[UIImageView alloc] initWithImage:image2];
..
..
UIImageView *image5 = [[UIImageView alloc] initWithImage:image1];

// Put all the UIImageViews in an array.
_imageArray = [[NSArray alloc] initWithObjects:image1, image2, image3, image4, image5, nil];

// Make this method to count the number of images in the given array.
- (int)numberOfImagesIn:(NSArray *)array {
    int count = 0;
    for (UIImageView *view in array) {
        if (view.image) {
            count++;
        }
     }
     return count;
}