2010-09-21 2 views
22

Чтобы показать UIActionSheet на IPad я это сделал:UIActionSheet Изменить положение стрелки?

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

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

ответ

2

В документации для метода состояний -showFromRect:inView: этого:

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

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

+2

Может случиться так, что лист появится под рукой пользователя, что не очень приятно. – BastiBen

+10

Если «iOS знает лучше», почему разрешены направления стрелок, указанные в качестве аргументов для обычного API popover? Короткий ответ: iOS не знает лучше всего. – hatfinch

25

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

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

+2

Чувствую себя виноватым в этом, но это работает. – lavoy

+1

Я не думаю, что это хак. Почему, по вашему мнению, Apple предоставляет подпись метода с отдельным параметром 'rect'? Если все, что вам нужно сделать, это предоставить прямоугольник границ для 'view', тогда параметр' rect' также не может быть там. – 2012-09-18 15:50:40

+0

Я пытался сделать это с помощью BarButtonItem и не повезло. Я попытался получить позицию прямоугольника отсюда: http://stackoverflow.com/a/5914649/590767 – fatuhoku

4
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 - контроллер с раздельным изображением: Он отображает экран действий со стрелкой влево в конце основного вида (вид таблицы). Стрелка внутри с 10 пикселями в ячейке. Попробуй это. Легко понять логику отображения листа действий. Спасибо - Manraj.

+0

Полезный совет, я смог настроить код выше и получить желаемые результаты. – Umair

Смежные вопросы