【问题标题】:UIActionSheet Change arrow position?UIActionSheet 更改箭头位置?
【发布时间】:2010-09-21 18:32:08
【问题描述】:

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

[actionSheetX showFromRect:RectX inView:myView animated:YES];

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

【问题讨论】:

    标签: ipad uikit uiactionsheet


    【解决方案1】:

    Apple 没有为 UIActionSheet 的 showFromRect 内部实现提供对内部结构的任何访问,但至于箭头方向,实际上有一种非常hack-y 的方法来解决这个问题,并且能够改变箭头方向到想要的方向。

    技巧是弄乱- (void)showFromRect:(CGRect)rect inView (UIView *)view animated:(BOOL)animated 中的rect 参数。 Apple 没有很好地记录这个 rect 参数,但是如果你的原始 rect 会给你一个向下的箭头方向,请输入一个高度和负数 origin.y 的矩形。y 会一直向上推动操作表弹出窗口从而显示向上的箭头方向。这是一个极端的 hack,但它在固件中始终如一地工作。希望能帮助到你。

    【讨论】:

    • 我觉得有点内疚,但它确实有效。
    • 我认为这根本不是 hacky。为什么您认为 Apple 提供带有单独 rect 参数的方法签名?如果您只需要为view 提供边界矩形,那么rect 参数可能不存在。
    • 我尝试使用 BarButtonItem 来执行此操作,但没有运气。我尝试从这里获取矩形位置:stackoverflow.com/a/5914649/590767
    • 好的,我设法从模式上的 UIBarButtonItem 做到了。请务必使用呈现视图控制器的视图矩形。 UIView *parentView = self.presentingViewController.view; CGRect rect = [self.navigationItem.rightBarButtonItem frameInView:parentView]; CGRect hacks = CGRectMake(rect.origin.x, -1, rect.size.width, rect.origin.y + rect.size.height); [actionSheet showFromRect:hacks inView:parentView 动画:YES];对我来说很好。
    【解决方案2】:
    CGRect cellRect = cell.bounds;
    cellRect.size.width = cell.frame.size.width * 2;
    cellRect.origin.x = -(cell.frame.size.width + 10.0);
    [_actionSheet showFromRect:cellRect inView:cell animated:YES];
    

    感谢 - overboming.

    iPad - 拆分视图控制器: 它在主视图(表格视图)单元格的末尾显示带有左箭头的操作表。单元格内有 10 个像素的箭头。试试这个。操作表显示的逻辑很容易理解。谢谢 - Manraj。

    【讨论】:

    • 有用的提示,我可以调整上面的代码并得到想要的结果。
    【解决方案3】:

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

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

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

    【讨论】:

    • 嗯,有可能会发生工作表出现在用户手下的情况,这不太好。
    • 如果“iOS 最了解”,为什么允许箭头方向作为参数提供给普通弹出框 API?简短的回答:iOS 不知道最好的。
    猜你喜欢
    • 2014-11-20
    • 2017-02-05
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2020-12-08
    • 2021-06-10
    相关资源
    最近更新 更多