UIActionSheet更改箭头位置?

lba*_*ias 22 uikit uiactionsheet ipad

要在iPad上显示UIActionSheet,我这样做了:

[actionSheetX showFromRect:RectX inView:myView animated:YES];
Run Code Online (Sandbox Code Playgroud)

弹出窗口的箭头指向下方,我可以将此位置更改为指向左侧,上方或右侧,就像使用普通弹出框一样?

ove*_*ing 25

Apple没有为UIActionSheet的内部实现提供任何内部结构访问showFromRect,但是对于箭头方向,实际上有一种非常黑客的方法可以解决这个问题,并且可以将箭头方向改变到所需的方向.

诀窍是乱七八糟的矩形参数- (void)showFromRect:(CGRect)rect inView (UIView *)view animated:(BOOL)animated.Apple没有很好地记录这个rec​​t参数,但是如果你的原始rect会给你一个向下箭头的方向,请输入一个大的高度和负数的origin.y将推动动作表popover一路向上因此显示向上箭头方向.这是一个极端的黑客攻击,但它在整个固件中运行一致.希望能帮助到你.

  • 我对这种愚蠢感到内疚,但它确实有效. (2认同)

ind*_*gie 2

该方法的文档-showFromRect:inView:说明了这一点:

在 iPad 上,此方法在弹出窗口中显示操作表,其箭头指向视图的指定矩形

这意味着您可以通过摆弄矩形来让它显示您想要的箭头方向。但是,我无法想到为什么您要手动设置箭头方向,因为UIActionSheet会自动计算最佳箭头方向。

  • 如果“iOS 最了解”,为什么允许箭头方向作为普通弹出框 API 的参数?简短的回答:iOS 并不知道最好的。 (10认同)
  • 好吧,工作表可能会出现在用户的手下,这不太好。 (2认同)