1

我进行了数周的搜索,终于在 Github 上找到了一个适合我需要的示例。这是一个垃圾拖动示例。我现在已经根据我的需要编辑了这个例子。

我现在只有一个问题。在我的 Scrollview 中,我有 5 张图片,但它们都是一样的。

我想知道如何使每个缩略图成为不同的图像,因此当我将图像从 Scrollview 拖动到顶部的 Imageview 时,它会更改为我从滚动视图中拖动的图像。

基本上我希望我的滚动视图中的不同图像与我所拥有的不同。

我快到了,我被困在完成战斗所需的最后一件事上。

一如既往,我们将不胜感激任何帮助,下面是一些示例图像和我的示例项目的链接。

谢谢你。

我的样品项目

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

2 回答 2

3

这就是我所做的:

一。像这样重写类的- initWithFrame:方法GalleryButton

- (id)initWithFrame:(CGRect)frame imageName:(NSString *)imgName
{
    self = [super initWithFrame:frame];
    if (self) {
        isInScrollview  = YES;

        CGRect myImageRect = CGRectMake(0, 0, 64, 64);
        images = [[UIImageView alloc] initWithFrame:myImageRect];

        // here's the change:
        // instead of a constant name, use the `imgName` parameter
        [images setImage:[UIImage imageNamed:imgName]];
        [self addSubview:images];

        self.backgroundColor = [UIColor blackColor];
        self.layer.borderWidth = 2;
        self.layer.borderColor = [UIColor blackColor].CGColor;
        self.layer.masksToBounds = YES;
        self.layer.cornerRadius = 5;
    }
    return self;
}

然后,像这样重写类的- addAttachment:方法GalleryScrollView

- (void) addAttachment:(AttachmentItem *)attachment withImageNamed:(NSString *)imgName
{
    // everything stays the same (!), except this line:
    GalleryButton *btnAttachment = [[GalleryButton alloc] initWithFrame:CGRectMake(startX, startY, width, height)];
    // is to be extended to:
    GalleryButton *btnAttachment = [[GalleryButton alloc] initWithFrame:CGRectMake(startX, startY, width, height) imageName:imgName];
    ...
}

然后,在 中- [HegakaDragAndDropRecycleBinViewController viewDidLoad],指定要使用的图像的文件名:

[self.gallery addAttachment:item withImageNamed:@"recyclebin"];
[self.gallery addAttachment:item withImageNamed:@"canadian-maple"];
[self.gallery addAttachment:item withImageNamed:@"light-cherry"];
[self.gallery addAttachment:item withImageNamed:@"mozambique-wenge"];
[self.gallery addAttachment:item withImageNamed:@"canadian-maple"];

结果:

在此处输入图像描述

于 2012-11-11T20:13:56.503 回答
0

注意: 将来,提供您认为与问题特别相关的代码片段对您会有所帮助。发布整个项目和您遇到的问题有点懒惰。你试过什么?在您在这里问之前尝试过什么,什么不起作用?

在您的GalleryButton.m课程中,该initWithFrame:方法具有以下代码:

CGRect myImageRect = CGRectMake(0, 0, 64, 64);
images = [[UIImageView alloc] initWithFrame:myImageRect];
[images setImage:[UIImage imageNamed:@"light-cherry.png"]];
[self addSubview:images];

变量名称images令人困惑,因为它实际上是单个UIImageView,但这是分配按钮图像的位置。

解决方案是:

  1. 更改initWithFrame:初始化程序以也接受UIImage可以传递给UIImageView
  2. GalleryButton向您的被调用setImage:(UIImage*)image或类似方法添加一个新方法,以设置image您的UIImageView对象。

老实说,如果是我,我会两者都做,除非您不希望在创建按钮后修改该图像,在这种情况下,您应该只实施选项 1。

于 2012-11-11T20:09:17.080 回答