如何在可缩放滚动视图中绘制可点击的网格对象,从远程 json 数据中获取数据?

Posted

技术标签:

【中文标题】如何在可缩放滚动视图中绘制可点击的网格对象,从远程 json 数据中获取数据?【英文标题】:How to draw clickable grid objects inside zoomable scrollview taken datas from remote json data? 【发布时间】:2016-10-04 12:45:49 【问题描述】:

我想在下面的可缩放scrollview 中绘制可点击 网格对象@从远程json 数据我的示例远程json 文件数据中获取的数据;

Json数据爆炸方式;

0 = 空对象不在视图中显示对象

1 = 显示带有标题和背景的对象不是空对象

[
  
    "Base": "A",
    "Seats": "A1*0*,A2*1*,A3*1*,A4*1*,A5*0*,A6*0*"
  , 

    "Base": "B",
    "Seats": "B1*1*,B2*1*,B3*1*,B4*0*,B5*0*,B6*0*,B7*1*"
  , 

    "Base": "C",
    "Seats": "C1*0*,C2*0*,C3*0*,C4*0*,C5*0*,C6*0*,C7*1*,C8*1*,C9*1*,C10-C11*1*"
  
]

我也有远程 json 解析代码,我将 json 数组成功带到我下面的数组中;

var Base = [""]
var Seats = [""]

将显示在我的 zoomable scrollview 里面 json 如下所示;

       1   2   3   4   5   6   7    8    9    10   11 

A         A2  A3   A4           
B      B1 B2  B3               B7     
C                              C7   C8   C9   C10-C11

A2,A3,A4 这样的非空对象必须是正方形 width : 20 height : 20 带有绿色背景的可点击对象。当我点击我的视图时,我可以将背景颜色更改为红色等。

还有 C10-C11 必须是widthx 2 以便容纳双座位。您可以看到即将发布的 json 值。

我该怎么做我尝试collectionview 但没有zoom 功能?我想我需要处理 cgrect somethings 吗?

谢谢!

【问题讨论】:

还在寻找解决方案? @cire.boroguies 是的,伙计。 【参考方案1】:

您的 json 文件格式是固定的还是可以自定义的?它似乎没有为您的期望做好充分准备。

您不需要有 A B C 部分并在网格项目中重复部分名称。与战舰游戏一样,每个单元格的名称由列和行标题表示。所以如果你可以格式化这个:

[ "A":"0","1","1","1","0","0"... , "B":"1","1","1","0"...,"C" : ..."0","1","1","1",**"2"**]

(注意:仅当座位只能水平翻倍时才有效)

现在您创建两个数组:一个通过获取字典(来自 JSON)键的基本名称: let bases = jsonDict.allKeys 另一个包含所有数据:let seats = jsonDict

现在你应该循环两次: 首先在基本数组中,然后在每个基本条目的座位数组中。

每次检查seats[bases[index in base loop]][index in the seat loop] 的值以获取值。如果为 0,则继续,如果为 1,则创建方形视图并将其添加到滚动视图。如果它 2 具有双倍宽度的方形视图,则相同。

要设置方形视图(如果值为 2,则为矩形)的位置,请使用循环索引。基地是行,座位是列。方形视图的锚点将是 x:0 用于座位循环中的索引 0 和 y:0 用于 A 基础,将是座位循环的 x:20 * loop index 和基础循环的y: 20 * loop index。宽度为value * 20,高度始终为 20。

然后你通过处理触摸事件来管理方形视图本身的点击和颜色状态。

不要忘记将滚动视图的 contentSize 设置为 CGSize(width: base[0].count * 20, height: bases.count * 20

如果有帮助,请告诉我。

【讨论】:

以上是关于如何在可缩放滚动视图中绘制可点击的网格对象,从远程 json 数据中获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作可缩放的滚动视图?

在IOS中创建可缩放视图[关闭]

在可缩放的滚动视图中禁用图像视图缩放

如何在 xamarin 表单中进行可单击和可缩放的网格 (10000 x 10000)

应使用哪些滚动视图和图像视图设置在 iOS 中显示可缩放图片?

如何从Python列表中绘制可缩放的Cantor集?