PYWaveViewTemp
О пользовательском волновом эффекте представления, который можно использовать в качестве индикатора выполнения. По умолчанию доступны два варианта: линейный и круговой. Можно настроить форму.
[Рисунок: волна.gif]
Введение: В процессе работы возникла необходимость в создании эффекта волны. После изучения множества материалов был разработан инструмент.
Часть 1. Реализация идеи
- Для расчёта точек на волне используется синусоидальная функция, а
UIBezierPath
используется для соединения точек с помощьюmoveToPoint
иaddLineToPoint
.
setNeedsDisplay
.Часть 2. Подробный код 1. Создание
- Предоставленный конструктор автоматически запускает волну без необходимости ручного вызова функции запуска.
/**
* Конструктор класса волнового представления
* @param colorMutableArray массив цветов
* @param progress высота или прогресс, выраженный в процентах от self.frame.size.height
*/
+(instancetype)waveViewWithFrame:(CGRect)frame andColorSet: (NSMutableArray <UIColor *>*)colorMutableArray andProgress: (CGFloat)progress;
/**
* Конструктор класса волнового представления
* @param colorMutableArray массив цветов
* @param progress высота или прогресс, выраженный в процентах от self.frame.size.height
*/
-(instancetype)initWithFrame:(CGRect)frame andColorSet: (NSMutableArray <UIColor *>*)colorMutableArray andProgress: (CGFloat)progress;
2. Запуск и остановка волны
Флаг запуска волны (устанавливается в YES для запуска волны, устанавливается в NO для остановки волны. По умолчанию — NO).
@property (nonatomic,assign) BOOL isWaveStart;
3. Расширенные возможности
///Массив цветов, которые необходимо отобразить. Можно добавлять в любое время. При рисовании массив будет пройден.
@property (nonatomic,strong) NSMutableArray<UIColor *> *colorMutableArray;
Высота или прогресс, выраженные в процентах от self.frame.size.height.
@property (nonatomic,assign) CGFloat progress;
- Амплитуда (амплитуда волны)
@property (nonatomic, assign) CGFloat amplitude;
@property (nonatomic, assign) CGFloat cycle;
@property (nonatomic, assign) CGFloat distanceH;
@property (nonatomic, assign) CGFloat distanceV;
@property (nonatomic, assign) CGFloat waveScale;
- Пользовательская форма
@property (nonatomic, strong) UIBezierPath *bazierPath;
@property (nonatomic,assign) PYWaveViewPathType pathType;
typedef enum : NSUInteger {
PYWaveViewPathType_CIRCULAR = 0,//круг
PYWaveViewPathType_RECT = 1,//прямоугольник
} PYWaveViewPathType;
Без лишних слов, исходный код можно найти здесь
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )