如何将UIButton绑定的UIMenu显示位置调整至按钮右下角
有两种常用实现方案,适配不同系统版本需求:
方案1:自定义UIButton子类(兼容iOS14+,全版本支持)
所有支持UIMenu的iOS系统都可以用这个方案,稳定且无需版本判断:
- 自定义继承自UIButton的子类,重写
menuAttachmentPoint方法,返回按钮右下角坐标作为菜单附着锚点
class RightBottomMenuButton: UIButton { override func menuAttachmentPoint(for configuration: UIButton.Configuration) -> CGPoint { // 直接返回按钮右下角点,如需额外偏移可对应增减x/y数值 return CGPoint(x: bounds.maxX, y: bounds.maxY) } }
- 原有代码中将你的按钮类替换为
RightBottomMenuButton即可,其余UIMenu初始化逻辑不需要修改。
方案2:iOS16+ 无子类快捷实现
iOS16新增了菜单位置相关的原生属性,不需要自定义子类也可以调整:
if #available(iOS 16.0, *) { // 设置菜单从按钮下方弹出 button.menuPlacement = .popDown // 配置菜单与按钮右边缘对齐 button.configuration?.titleMenuAlignment = .trailing }
内容的提问来源于stack exchange,提问作者Sherly
相关产品推荐
相关产品推荐

