2015-03-17 4 views
0

Я хочу создать круговой слайдер, как показано ниже.iOS Circular Slider

enter image description here

Но я хочу две функциональные возможности в дополнение.

1) Я хочу запустить ползунок из любой точки, но на рис. он начинается с 0.

2) Я хочу включить несколько ползунков в один круглый черный участок.

Я разделяю ссылку этого проекта: https://www.cocoacontrols.com/controls/circularsliderdemo

Может кто-нибудь помочь мне сделать эти функциональные возможности. Спасибо заранее.

+3

Это не так, как работает SO. SO - это помощь в решении конкретных проблем. Существуют и другие сайты, такие как Github, где вы можете публиковать совместные проекты и получать помощь, а также такие места, как CodeMentor, где вы можете заплатить кому-то, кто поможет вам в вашем проекте (я участвую в обоих этих проектах). То, что вы описали, было бы не особенно тяжело для опытного разработчика тросов Cocoa/Cocoa. –

ответ

4

Посмотрите на CAShapeLayer. Вы можете создать путь, который является полным кругом, и использовать свойства strokeStart и strokeEnd, чтобы рисовать только часть круга. Вы можете использовать анимацию ядра для анимации между началом и концом.

В Github есть открытый пользовательский распознаватель жестов, который является распознающим жестом одного пальца. Это было бы хорошим началом для обнаружения и реагирования на жест верха, который потребует такого контроля. EDIT: Это называется KTOneFingerRotationGestureRecognizer (link)

Это некоторые идеи, которые помогут вам начать работу.

У меня есть проект на github под названием iOS-CAAnimation-group-demo Это включает в себя анимацию «clock wipe». Очистка часов работает, устанавливая слой фигуры в качестве слоя маски для изображения, устанавливая дугу с полным кругом, которая достаточно широка, чтобы полностью заполнить прямоугольную область, а затем оживить свойство strokeEnd слоя формы, чтобы выявить/скрыть изображение. Протирание часов намного сложнее, чем вам нужно, но это даст вам семя того, что вы хотите. Вы бы использовали слой с более тонкой шириной линии, и вы использовали бы его как слой контента, а не как маску.

+0

Нет такой вещи, как CAPathLayer. – matt

+0

@matt, извините, мой ошибка. Я имел в виду CAShapeLayer. (Я исправил свой ответ.) Спасибо, что указал на мою ошибку. –

+0

Yup, нет вреда не фол. – matt