Как переместить несколько кнопок по всему экрану - PullRequest
1 голос
/ 13 февраля 2011

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

Но моя главная задача - как заставить все пузырьки двигаться, т.е.Как управлять каждым из них?

Я использовал NSTimer.

NSTimer* timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(moveTheButton) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

Но это может быть полезно в случае, если у меня есть только одна кнопка.Если имеется больше кнопок, управлять таймерами довольно сложно.

Кроме того, количество кнопок является динамическим.

Пожалуйста, предложите несколько альтернатив.

Я прошел несколько потоковно не получил ожидаемого ответа.

Заранее спасибо за помощь .....

Ответы [ 2 ]

1 голос
/ 13 февраля 2011

Я бы предложил использовать CAAnimations для перемещения ваших кнопок. Это позволит вам плавно анимировать ваши кнопки без использования NSTimers, а также идеально подойдет для динамического создания анимации кнопок.

CAAnimations создаются и добавляются в слой представлений. Вы можете анимировать поворот, положение и размер представления, используя CAAnimations. Также легко добавлять и удалять анимации из слоя представлений, что делает его идеальным для динамического содержимого без головной боли нескольких NSTimers.

0 голосов
/ 13 февраля 2011

Как должен UIButton двигаться? Вы имеете в виду что-то вроде случайного перемещения каждой кнопки, как при броуновском движении ? : D

Ну, на самом деле, это не имеет значения, я думаю, но давайте рассмотрим, что у вас есть обобщенная функция, которая определяет поведение каждой кнопки с учетом ее текущей позиции , в этом случае вы можете использовать NSArray чтобы отслеживать все позиции ваших кнопок в каждый момент времени и просто вызывать эту функцию для одного NSArray (затем циклически переключая его элементы) в качестве селектора NSTimer.

Если у вас нет одной обобщенной функции, но у каждой кнопки есть своя собственная функция, вы можете создать подкласс UIButton для каждого вида движения, который вам нужно позаботиться, и реализовать метод для каждого класса, который реализует правильное движение. Тогда у вас может быть функция, вызванная в NSTimer, которая циклически перебирает массив ссылок кнопок и вызывает реализованный метод движения для каждого экземпляра (посредством полиморфизма)

...