小编Bri*_*n H的帖子

如何强制UIKit弹出菜单按钮项的顺序?

我在 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)

menu popup button uikit swift

4
推荐指数
1
解决办法
1480
查看次数

标签 统计

button ×1

menu ×1

popup ×1

swift ×1

uikit ×1