将分布在屏幕边缘的可移动 UILabel 保存到有序数组中

Save moveable UILabels distributed around the edges of the screen into ordered array

在我的应用程序(一个游戏)中,我有一堆 N(玩家数量)个可移动的 UILabel 分布在屏幕的边缘。 label.text 是从 PlayerNamesArray 中提取的。其中一个标签应随机指定为第一个元素(我已经可以这样做)。我遇到的问题是,有没有什么办法可以让我顺时针分配下一个标签的文本,使其成为更新的 PlayerNamesArray 中的下一个元素? (或者我可以创建一个新数组)

例如,如果 MR 是第一个元素,则数组将为 @[@"MR",@"RE", @"QW", ... @"CD"]

我发现这很难,因为标签可以在按下 "start" 按钮之前沿着视图的边缘移动到任何地方(因此顺序可以是任何东西)并且只有在那之后才是位置标签已修复。

有没有人对我可以做些什么来解决这个问题有任何指示或想法?

我会这样做:

mainView是添加所有玩家的视图。

NSMutableArrayplayerLabels

得到randomFirstPlayerIndex.

保留对 PlayerLabel 的引用(来自 randomFirstPlayerIndex)。

UILabel *firstPlayer = [playerLabels objectAtIndex:randomFirstPlayerIndex];

使用 sortUsingComparator: 和自定义 comparatorBlock 对 playerLabels 进行排序。 在这个自定义 comparatorBlock 中(您可以通过网络搜索如何进行自定义排序),从 UILabel 的中心(一个 playerLabel)和 [=12= 的中心获取角度] 并进行比较。

获取您的 firstPlayer 的新索引:

NSUInteger firstPlayerIndex = [playerLabel indexOfObject:firstPlayer];

根据它重新排序playerLabels:
将索引低于 firstPlayerIndex 的每个对象放在 playerLabels.

的末尾

这没有经过测试,但应该可以解决问题,只是给出算法的指导方针。