我在 Swift 应用程序的同一屏幕上有几个 UIKit 弹出菜单按钮,它们具有相同的菜单项。这些按钮是通过调用一个函数来构建的,该函数使用字符串数组来创建菜单项列表。
问题是,根据按钮在屏幕上的垂直位置,菜单项可能会按功能指定的顺序出现,或者相反。如果该按钮位于屏幕的上半部分,则菜单项会按正确的顺序列出。如果该按钮位于屏幕的下半部分,则菜单项将以相反的顺序列出。
我希望菜单项以相同的顺序出现,无论按钮在屏幕上的位置如何。我可以检查按钮位置并让菜单创建功能反转顺序,但这似乎有点笨拙。我希望有一种更干净的方法来覆盖这种行为。
用于创建按钮菜单的代码和数组:
let buttonMenuItems = ["Spring","Summer","Autumn","Winter"]
func createAttributeMenu(menuNumber: Int)->UIMenu {
var menuActions: [UIAction] = []
for attribute in buttonMenuItems {
let item = UIAction(title: attribute) { action in
self.updateMenu(menuID: menuNumber, selected: attribute)
}
menuActions.append(item)
}
return UIMenu(title: "", children: menuActions)
}
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
我现在在测试中使用的版本:Xcode 14.1、iOS 16.1,但我也在早期版本中看到了这种行为。(回到iOS 14.x)