Как по-другому оформить точку индикатора текущей страницы в UIPageControl?

#ios #objective-c

#iOS #objective-c

Вопрос:

Кажется, это очень простое требование к дизайну пользовательского интерфейса, которое, похоже, я не могу найти способ легко реализовать в iOS. По сути, разработчики пользовательского интерфейса хотят, чтобы точка индикатора текущей страницы была вытянутой точкой вместо обычной. Например, стандартные точки UIPageControl имеют размер 14×14 на экране Retina, в то время как они хотят, чтобы точка текущей страницы была 30×14, и я поискал в Google, но, похоже, не могу найти простой способ добиться этого?

Я видел предыдущие ответы о том, как поместить некоторые пользовательские UIImageViews в подвиды UIPageControl, однако, похоже, они не работают для последних версий iOS. Простое изменение ширины точки для индикатора текущей страницы просто приводит к увеличению расстояния между точками. Я думаю, я могу создать свой собственный пользовательский UIView с нуля для этой функции, но, похоже, это большая работа для такого простого требования.

Итак, есть идеи, как сделать так, чтобы точка индикатора текущей страницы в UIPageControl выглядела иначе, чем остальные точки? Спасибо.

Комментарии:

1. Как правило, не стоит пытаться напрямую изменять внутренние элементы для многих элементов пользовательского интерфейса… возможно, вам лучше написать свой собственный элемент управления страницей. Вы пробовали искать (Google или ваша любимая поисковая система) custom uipagecontrol ? Множество результатов.

2. ну, как я уже сказал, я уверен, что могу написать пользовательский объект UIView с нуля для выполнения задачи, но это просто кажется излишеством для такого простого требования. Я наверняка погуглил пользовательский UIPageControl, лучшие результаты — это ответы SO о том, как поместить UIImageView в его подпросмотр, который, я думаю, больше не работает. Также я думаю, что стоило бы приложить усилия для написания моего собственного UIView, если я хочу поместить значки изображений и т.д. заменить точки, но написать пользовательский UIView только для удлиненной точки? Это действительно единственный способ?

3. Вы хотите, чтобы только «текущая» точка была шире? И сохранить интервал? То есть точки будут смещаться с каждым изменением? Или вы хотите увеличить расстояние между точками, чтобы их горизонтальные центры оставались постоянными?

4. @DonMag, можно использовать оба варианта, в зависимости от того, что проще достичь.

5. Что ж, я взглянул на более старый метод настройки преобразований для точек, но не похоже, что он все еще работает с текущими версиями iOS. Похоже, что создание пользовательского элемента управления страницей — для конкретного целевого использования — было бы довольно тривиальным. Создание того, что полностью копирует UIPageControl с настраиваемыми точками, потребовало бы немного больше работы.

Ответ №1:

Я получаю это, переписывая UIPageControl.layoutSubviews.

мой код:https://github.com/SumiaFish/KVPageContrl

введите описание изображения здесь