iOS:如何在静态图像上添加动态按钮?
Posted
技术标签:
【中文标题】iOS:如何在静态图像上添加动态按钮?【英文标题】:iOS: How to add dynamic buttons over static images? 【发布时间】:2012-10-11 21:01:09 【问题描述】:我最近继承了一个 iPad 项目,它基本上是一个图像/演示文稿查看器。选择用户希望查看的演示文稿后,该应用程序基本上会一张一张地显示图像,当用户向上或向下滑动,或者当他们点击屏幕角落的箭头之一时,图像会发生变化。但是,演示文稿中的一些图像有分页点,它们的两边都有箭头。图像是按顺序排列的,当您从一个滑动到下一个时,点会移动。我们的客户希望能够使用作为静态图像一部分的点和箭头进行导航。这意味着当他们击中一个点时,它会将他们带到适当的页面。
此应用程序的早期、早期、原始版本有一个巨大的 plist 文件,其中包含有关应用程序中所有图像的信息,包括是否有这些轮播视图,以及它们会去哪里。现在这种情况早已不复存在,应用程序中的图像/演示文稿比当时多得多。
有没有更好的方法来确定在哪里听触摸?或者我应该辞职写一个文本文件,并且知道当内容发生变化时我必须编辑它?我被告知内容不应该经常更改。
【问题讨论】:
所以所有的点都在图像中的固定位置,并且所有图像的点数都是固定的? 很遗憾,这并不容易。在演示文稿中,有少量图像,也有超过 30 个图像。在演示文稿中,如果有轮播视图,它只会跨越演示文稿中图像的子集。圆点的位置可能因演示文稿而异,但同一演示文稿中具有相同圆点的一系列图像会将它们放在同一位置。 理想情况下,您需要一些算法来检测图像中的点,对吧?检查这个***.com/questions/12145450/…和这个dsp.stackexchange.com/questions/2644/… 我刚刚看到你接受了我的回答——你真的使用了这个想法吗?我确实认为它会起作用,现在真的很好奇...... 我开始做类似的事情,尽管位置存储在 plist 中。然后项目失败了。 【参考方案1】:您需要创建图像到点位置的映射,并在图像符合查看条件时动态执行此操作,并在图像超出范围时将其删除。如果您使用的是 UIImageViews,则可以为此使用标签字段,否则 - 如果使用原始 CGImageRefs 或 UIImages 也可以。
您创建一个 mutableDictionary,并使用键映射到图像。如果是 UIImageView,这可以是代表标签的 NSNumber,如果是图像,则可以使用设置为图像地址的 NSValue 对象。当图像进入范围时,您向字典中添加一个条目,该条目具有图像键,以及单个 NSNumber 来标识点位置,或者是命中矩形的字符串表示(回想一下,您可以将 CGRects 转换为字符串,反之亦然与 NSStringFromCGRect() 等)。
当您点击图像时,您会获得相关图像的键,从可变字典中请求定位器,并允许或禁止它。您需要知道图像在任何容器中的帧,因为正在执行点击识别的任何内容可能不是图像本身,因此您可以获得本地图像偏移量。
【讨论】:
以上是关于iOS:如何在静态图像上添加动态按钮?的主要内容,如果未能解决你的问题,请参考以下文章
iPhone iOS:如何在图像背景上动态移动/调整图像大小?
如何在 iOS 中将 UIView 添加到 UIScrollView 中(具有动态内容的视图)