为了在iPad上显示UIActionSheet,我这样做:
[actionSheetX showFromRect:RectX inView:myView animated:YES];
气泡窗口的箭头指向下方,我能否更改它的位置,使其指向左、上或右边,就像使用普通的气泡窗口时那样?
为了在iPad上显示UIActionSheet,我这样做:
[actionSheetX showFromRect:RectX inView:myView animated:YES];
气泡窗口的箭头指向下方,我能否更改它的位置,使其指向左、上或右边,就像使用普通的气泡窗口时那样?
苹果不提供任何访问 UIActionSheet 内部实现的途径,但是关于箭头方向,实际上有一种非常巧妙的方法可以绕过这个问题,从而能够将箭头方向改为所需的方向。
技巧在于在 - (void)showFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated
中搞乱矩形参数。苹果对此矩形参数的文档并不是很清楚,但如果您的原始矩形将给您一个向下的箭头方向,则提供具有大高度和负数 origin.y 的矩形将会将 action sheet 弹出窗口推到最上面,从而显示向上的箭头方向。这是一种极端的 hack,但它可以在所有固件版本中稳定运行。希望这有所帮助。
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。
-showFromRect:inView:
方法的文档说明如下:
这意味着,您可以通过调整矩形区域来使其显示所需的箭头方向。但是,我想不出任何原因,让您需要手动设置箭头方向,因为在 iPad 上,此方法会将操作表显示在一个弹出框中,并将箭头指向视图上指定的矩形区域。
UIActionSheet
会自动计算最佳的箭头方向。
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 animated:YES];对我来说很好用。 - fatuhoku