UIScrollView действительно ничего не купит в этой ситуации.Он не будет ставить вещи в очередь / снимать с очереди автоматически (хотя будет UITableView) и реагирует только на горизонтальную и вертикальную прокрутку.Из коробки вы не можете вращать ее вокруг оси.
На самом деле в UIKit нет ничего, что могло бы вам помочь, вы, вероятно, захотите начать с нуля с UIView.
Используйте UIPanGestureRecognizer (Перетаскивание) и UISwipeGestureRecognizer , чтобы отслеживать, когда ваш пользователь касается вращающегося элемента.UIRotatationGestureRecognizer
, вероятно, не то, что вы хотите, потому что он требует, чтобы пользователь использовал два пальца.
В зависимости от того, насколько сложным вы становитесь с этим видом, вы можете сойти с рук, просто выполнив:
view.transform = CGAffineTransformMakeRotation(someRadian);
Рассчитайте количество оборотов (в радианах) на основе того, как далеко x & y пользователь принял наркотик.В зависимости от того, насколько вы хотите получить, 1 пиксель x или y может дать вам вращение в радианах .1 (я просто догадываюсь, вы захотите поиграть с ним, пока не получите нужную скорость).Если вы хотите стать действительно модным и сделать так, чтобы ваш пользователь на самом деле держал палец, вы захотите использовать некоторую тригонометрию, чтобы перевести это в величину вращения.
Если это пролистывание, рассчитайте, на сколько и на сколько вы хотите повернуть вид, и оберните его в анимацию UIView.
Если вы обнаружите, что это не работает, вам может потребоваться перейти к CALayer, который немного сложнее:
view.layer.transform = CATransform3DMakeRotation(someRadian, 0, 0, 1);
и для его анимации вам понадобится создать CAAnimation:
CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
rotate.fromValue = [NSNumber numberWithFloat:0];
rotate.toValue = [NSNumber numberWithFloat:someRadian];
rotate.duration = 2.0; // seconds
[view.layer addAnimation:rotate forKey:nil]; // "key" is optional
Это может дать вам больше информации
Что касается добавления / удаления цветов, отслеживая, как далеко повернул круг, вы должны бытьвозможность рассчитать, какие образцы цвета вы хотите увидеть.Но, если вы готовы пойти на уступку ограниченному количеству цветов, вы можете просто расположить UIView со всеми цветами в Интерфейсном Разработчике, добавить его в корневой вид с видимым только правым углом, а затем повернуть его какописано ранее и не нужно беспокоиться об этом.