Рисование собственного колеса выбора - PullRequest
2 голосов
/ 17 ноября 2011

Я хотел бы создать колесо, которое будет загружать некоторые объекты (например, разных цветов), которые пользователь может «вращать», чтобы увидеть дополнительные цвета, что-то вроде этого:

Образец изображения здесь http://i44.tinypic.com/2uy0rqb.png

но я не уверен, с чего начать. Я хотел бы иметь возможность загружать столько цветов, сколько захочу, а затем ставить их в очередь / снимать с очереди, когда они входят и выходят из видимого окна просмотра. После некоторых исследований у меня сложилось впечатление, что использование UIScrollView - это способ добиться этого? Я собираюсь еще немного углубиться в этот вариант, но в то же время было бы неплохо узнать, является ли это верным путем или же это совершенно неверно, и есть ли другой / лучший подход.

Ответы [ 2 ]

5 голосов
/ 17 ноября 2011

Ознакомьтесь с этими iDevBlogADay сообщениями за август и сентябрь 2011 года:

Вы можете найти их весьма полезными для того, что вы пытаетесь сделать.

2 голосов
/ 17 ноября 2011

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 со всеми цветами в Интерфейсном Разработчике, добавить его в корневой вид с видимым только правым углом, а затем повернуть его какописано ранее и не нужно беспокоиться об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...