将分布在屏幕边缘的可移动 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
是添加所有玩家的视图。
NSMutableArray
的 playerLabels
。
得到randomFirstPlayerIndex
.
保留对 PlayerLabel
的引用(来自 randomFirstPlayerIndex
)。
UILabel *firstPlayer = [playerLabels objectAtIndex:randomFirstPlayerIndex];
使用 sortUsingComparator:
和自定义 comparatorBlock 对 playerLabels
进行排序。
在这个自定义 comparatorBlock 中(您可以通过网络搜索如何进行自定义排序),从 UILabel
的中心(一个 playerLabel
)和 [=12= 的中心获取角度] 并进行比较。
获取您的 firstPlayer
的新索引:
NSUInteger firstPlayerIndex = [playerLabel indexOfObject:firstPlayer];
根据它重新排序playerLabels
:
将索引低于 firstPlayerIndex
的每个对象放在 playerLabels
.
的末尾
这没有经过测试,但应该可以解决问题,只是给出算法的指导方针。
在我的应用程序(一个游戏)中,我有一堆 N(玩家数量)个可移动的 UILabel 分布在屏幕的边缘。 label.text
是从 PlayerNamesArray
中提取的。其中一个标签应随机指定为第一个元素(我已经可以这样做)。我遇到的问题是,有没有什么办法可以让我顺时针分配下一个标签的文本,使其成为更新的 PlayerNamesArray
中的下一个元素? (或者我可以创建一个新数组)
例如,如果 MR 是第一个元素,则数组将为 @[@"MR",@"RE", @"QW", ... @"CD"]
我发现这很难,因为标签可以在按下 "start" 按钮之前沿着视图的边缘移动到任何地方(因此顺序可以是任何东西)并且只有在那之后才是位置标签已修复。
有没有人对我可以做些什么来解决这个问题有任何指示或想法?
我会这样做:
mainView
是添加所有玩家的视图。
NSMutableArray
的 playerLabels
。
得到randomFirstPlayerIndex
.
保留对 PlayerLabel
的引用(来自 randomFirstPlayerIndex
)。
UILabel *firstPlayer = [playerLabels objectAtIndex:randomFirstPlayerIndex];
使用 sortUsingComparator:
和自定义 comparatorBlock 对 playerLabels
进行排序。
在这个自定义 comparatorBlock 中(您可以通过网络搜索如何进行自定义排序),从 UILabel
的中心(一个 playerLabel
)和 [=12= 的中心获取角度] 并进行比较。
获取您的 firstPlayer
的新索引:
NSUInteger firstPlayerIndex = [playerLabel indexOfObject:firstPlayer];
根据它重新排序playerLabels
:
将索引低于 firstPlayerIndex
的每个对象放在 playerLabels
.
这没有经过测试,但应该可以解决问题,只是给出算法的指导方针。