UIActionSheet Изменить положение стрелки? - PullRequest
22 голосов
/ 21 сентября 2010

Чтобы показать UIActionSheet на iPad, я сделал это:

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

Стрелка всплывающего окна указывает вниз, можно ли изменить это положение, чтобы оно указывало влево, вверх или вправо, как при использовании обычного поповера?

Ответы [ 3 ]

25 голосов
/ 01 января 2012

Apple не предоставляет никакого доступа к внутренней структуре для внутренней реализации UIActionSheet, равной showFromRect, но что касается направления стрелки, на самом деле существует очень хакерский способ обойти это и что-то вроде возможности изменить направление стрелки в желаемом направлении.

Хитрость в том, чтобы возиться с параметром rect в - (void)showFromRect:(CGRect)rect inView (UIView *)view animated:(BOOL)animated. Apple не очень хорошо документирует этот параметр прямоугольника, но если ваш исходный прямоугольник покажет направление стрелки вниз, введите прямоугольник с большой высотой и отрицательным числом origin. таким образом показывая направление стрелки вверх. Это экстремальный взлом, но он работает последовательно во всех прошивках. Надеюсь, поможет.

4 голосов
/ 15 октября 2012
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];

Благодаря - перерасходу.

iPad - Split View контроллер: Он отображает лист действий со стрелкой влево в конце ячейки основного представления (табличного представления). Стрелка внутри с 10 пикселями в ячейке. Попробуй это. Легко понять логику отображения листа действий. Спасибо - Манрай.

2 голосов
/ 22 марта 2011

Документация по методу -showFromRect:inView: гласит:

На iPad этот метод отображает лист действий в всплывающем окне, стрелка которого указывает на указанный прямоугольник вида

Это означает, что вы можете получить возможность отображать направление стрелки, которое вы хотите, играя с прямоугольником.Однако я не могу думать о том, почему вы захотите установить направление стрелки вручную, потому что UIActionSheet автоматически рассчитает наилучшее направление стрелки.

...