2017-01-07 3 views
2

У меня дизайн управления сегмента, как этот enter image description hereDesign UISegmentControl

Как проектировать свои сегменты так, что выбранный один должен выглядеть «ALL», как на картинке выше. Что я мог придумать для использования разных изображений при выборе, но если я это сделаю, то часть кривой, которая идет в «других», не будет видна. Любое предложение по проектированию UISegmentControl вот так?

+0

Попробуйте это с помощью коллекцииView. Для выбранного элемента измените фоновый желтый стиль. Если у вас есть изображение, такое как желтый фон, тогда его можно легко разработать, иначе используйте uibezierpath. –

+0

Как использовать 'UIBezierPath' в сегментах? И кривая пойдет и на другой выбранный сегмент? Даже если я использую 'UIBezierPath', он отображает кривые только на выбранном сегменте. – Nitesh

+3

Вы не используете 'UISegmentedController'. Это должно быть настраиваемый элемент управления. – rmaddy

ответ

3

У меня есть два предложения:

  1. найти альтернативный подход, который позволяет избежать этого. Многие приложения пытаются добавить восторг, создавая пользовательские компоненты и пользовательский интерфейс, когда на самом деле это действительно не добавляет этого приложения. В худшем случае вы можете расстроить людей, используя нестандартные компоненты, которые не работают так, как они ожидают, или увеличивают когнитивную нагрузку, поскольку они пытаются использовать ваше приложение.

  2. Перейти на 100% с пользовательским подклассом. Не просто соглашайтесь на установку статического фонового изображения, но и вкладывайте средства в создание компонента, который не только выглядит так в выбранном состоянии, но также обеспечивает анимацию, когда люди меняют выбранный элемент.

Это будет изрядное количество работы, но будет что-то вроде этого:

  • подклассов UISegmentedController - это обеспечивает основу функциональности, которую вы ищете, который хорошо;
  • добавив новый CAShapeLayer относительно контроля фонового слоя
  • выясняя динамическую кривую Безье, которая может обновить для всех государств (вероятно, в конечном итоге, контрольные точки для каждого сегмента), вы могли бы быть в состоянии сделать это вручную , но я должен использовать инструмент, такой как PaintCode, для генерации кода кривой безье, а Illustrator - сделать начальную кривую
  • добавить слушателей для изменения событий изменения сегмента и, при необходимости, пересчитать контрольные точки кривой

Положительным моментом является то, что свойство path на CAShapeLayer является анимированным , поэтому, когда сегмент меняется и обновляется кривая, анимация, вероятно, будет самой легкой частью!

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