如何在动态 ImageView 上创建动态按钮,同时保持唯一性

Posted

技术标签:

【中文标题】如何在动态 ImageView 上创建动态按钮,同时保持唯一性【英文标题】:How to create dynamic Buttons over dynamic ImageViews while maintaining the uniqueness 【发布时间】:2011-10-31 14:04:37 【问题描述】:

我正在使用 PhotoScroller 项目并希望以编程方式在 imageViews 上创建按钮。 ImageView 是 ScrollerView 的子视图。我的代码 sn-p 如下所示:

imageView = [[UIImageView alloc] initWithImage:image]; //initWithImage:image

//imageView.tag = i; // tag our images for later use when we place them in serial form
[imageView setContentMode:UIViewContentModeScaleToFill]; //though it has no impact
imageView.userInteractionEnabled = YES; //to enable touch interaction with image

[self addSubview:imageView];

UIButton *btn = [[UIButton buttonWithType:UIButtonTypeContactAdd] retain]; //Plus icon   button

btn.frame = CGRectMake(215, 550, 100, 100);
[btn addTarget:self action:@selector(onClickHotSpotButton)           forControlEvents:UIControlEventTouchUpInside]; //it wasnt working

[self addSubview:btn]; //Buttons are clickable but shows button on all images**

//[imageView addSubview:btn]; //Buttons are not clickable and are shown on all images

我现在有两个选择仪式。无论我是让我的按钮成为 ImageView 的子视图还是 ImageView 的父级 ScrollView。如果我制作 Scrollview 的按钮子视图,例如 [self addSubView:btn];它显示在正确的位置并且是可点击的,但问题是它是在队列中的所有图像上创建的,因为我将它设为父视图的子视图,即滚动视图。否则,如果我将其设为子视图的子视图,即 ImageView,它对每个图像都是唯一的,但仍显示在所有图像上且不可点击:/

any1 可以指导我如何使其可点击并保持动态按钮和图像之间的链接唯一,以便我在队列中每个图像的不同位置有不同的按钮。

提前致谢。

问候,

瓦希布

【问题讨论】:

【参考方案1】:

你必须创建一个额外的 UIView 来包含 UIImageView 和 UIButton

UIView* imageContainer = [[UIView alloc] initWithFrame:CGRectMake(0,0,1000,1000)] autorelease];
UIImageView* imageView = [[[UIImageView alloc] initWithImage:image] autorelease];

[imageView setContentMode:UIViewContentModeScaleToFill]; //though it has no impact
imageView.userInteractionEnabled = YES; //to enable touch interaction with image

[imageContainer addSubview:imageView];

UIButton *btn = [[UIButton buttonWithType:UIButtonTypeContactAdd] retain]; //Plus icon   button

btn.frame = CGRectMake(215, 550, 100, 100);
[btn addTarget:self action:@selector(onClickHotSpotButton) forControlEvents:UIControlEventTouchUpInside]; //it wasnt working

[imageContainer addSubview:btn];
[self addSubview:imageContainer];

注意内存泄漏。您的代码中有很多未使用的保留。

【讨论】:

以上是关于如何在动态 ImageView 上创建动态按钮,同时保持唯一性的主要内容,如果未能解决你的问题,请参考以下文章

使用 ImageView 动态创建多个 EditText 并将 ImageView 点击值设置为 EditText 并从 EditText 获取值

如何在动态按钮上创建动态按钮单击事件?

动态设置图像视图的边距

如何根据图片大小动态设置imageView的大小

android中如何动态修改ImageView中图片的大小 比如说点击该图片后图片能变大

MFC 中关于Edit控件问题