У меня есть круговой UIBezierPath
. Я использую путь для рисования круга на моем представлении, чтобы создать схему 24-часовых часов. У меня есть UIButton, положение которого зависит от текущего времени. Кнопка действует как рука «Час». Я хочу, чтобы пользователи могли перемещать UIButton по круговой траектории. Я называю это «посещать будущее/прошлое». Как ограничить движение кнопок по пути, который у меня есть?Ограничение движения UIButton по пути UIBezierPath
ответ
Override touchesBegan:
и touchesMoved:
методы в вашей точки зрения
- (void)touchesBegan: (NSSet *)touches withEvent:(UIEvent *)event
{
if([[event touchesForView:button] count])
{
//User is trying to move the button set a variable to indicate this.
}
}
- (void)touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint *point = [[event anyObject] locationInView:self];
/*Compare x and y coordinates with the centre property of the button
If x or y are greater set center of button to next point in circle or previous
point if any of them are lesser.*/
}
Примечание что вам нужно будет сохранить все точки в вашем круге в массиве, прежде чем пытаться это сделать, или вам нужно будет вычислить точки на окружности круга, зная радиус.
Нужен ли мне первый метод? У меня уже есть начальная точка, когда я устанавливаю позицию кнопки в соответствии со временем. И я бы предпочел рассчитать этот вопрос, но как бы? У меня есть радиус, но мне не нужен угол относительно центральной точки? – nupac
Поскольку вы переопределяете штрихи, перемещенные по виду, он будет вызываться для всех касаний, первый способ должен сообщить вам, что пользователь фактически начал, нажав кнопку – Suhas
Даже если вы вычислите угол, который вам, наконец, нужно будет преобразовать что к точкам по окружности. Это поможет вам лучше использовать очки вместо этого. – Suhas
Самый простой способ в touchesMoved, вы можете проверить, чтобы игнорировать контакт, который не находится в вашей точки зрения окружности с помощью:
CGPoint point = [touch locationInView:circleView];
if (![circleView pointInside:point withEvent:event]) {
return;
}
Я посмотрю на «pointInside: withEvent:» и вернусь к вам. Спасибо – nupac
У меня есть пользовательский UIView. В этом представлении drawRect я рисую круг. Если я тогда использую 'pointInside: withEvent:', это сработает? Круг не является самостоятельным uiview, он нарисован на виде. – nupac
В случае, если это не отдельный вид, я предполагаю, что вы разместите свой круг в середине экрана, поэтому центральная точка экрана соответствует центральной точке круга, которую вы можете вычислить, чтобы получить расстояние от точки касания до центральной точки круга, затем сравните его с радиусом круга. –
- 1. UIButton и UIBezierPath
- 2. пользовательский UIButton с UIBezierPath
- 3. анимация движения UIButton
- 4. Ограничение движения UIPanGestureRecognizer
- 5. Ограничение движения внутри круга
- 6. ограничение движения абсолютного положения
- 7. Ограничение диапазона движения подборщика
- 8. jQuery.sortable() и ограничение движения
- 9. Ограничение пути SVG по контейнеру
- 10. UIBezierPath меняет ширину сегмента пути
- 11. UIBezierPath Draw Наверху предыдущего пути?
- 12. UIButton Размещение и ограничение
- 13. Помутнения округлого прямоугольника UIBezierPath, UIButton фон
- 14. Constrain Drag UIButton по диагональному пути
- 15. ограничение движения внутри холста html5?
- 16. Цель и ограничение - планирование движения
- 17. Ограничение движения автошины в Excel
- 18. Ограничение UIButton titleText frame
- 19. Получить ограничение uibutton программно
- 20. Показаны UIBezierPath по мнению
- 21. Ограничить ограничение длины пути
- 22. Моделирование движения автомобиля по дорожке
- 23. Множественного UIView с UIBezierPath
- 24. Генерирование движения по кривой Безье
- 25. Настройка макетов движения вызывает ошибку пути
- 26. Как оживить (перемещать) UIButton, сохраняя его прикосновением во время движения?
- 27. ограничение пучка корневого пути
- 28. Обрезать UIBezierPath
- 29. Раскраска UIBezierPath
- 30. Направление движения по PHP
Предполагается, что кнопка должна отвечать линейным жестам? – Suhas
В настоящее время я использую 'UILongGestureRecognizer' – nupac
. Чтобы обнаружить длинное нажатие, которое, как я предполагаю, вы будете использовать, чтобы начать операцию перетаскивания. Как кнопка должна вести себя, если пользователь теперь перетаскивает кнопку по прямой? – Suhas