Я знаю, что есть лучшие способы достижения инструментов рисования с использованием CoreGraphics, а что нет, я использую этот метод UIView, потому что я хочу добиться пиксельного эффекта, и у меня есть некоторые другие специальные вещи в виду, что было бы трудно сделать только с встроенным кодом CG.
У меня есть сетка из 400 UIViews создать свой пикселизированной холст ...
Пользователь выбирает цвет краски и начинает перетаскивать пальцем по полотну 400 UIViews, так как их палец ударяет UIView в цвет этого UIView (aka pixel) изменится на тот цвет, который выбрал пользователь ...
Прямо сейчас я закодировал все это, и все работает, но оно лагги (потому что я использую touchhesMoved), и многие моменты пропущено ...Проверить, когда пользователь скользит по UIView - touchhesMoved too laggy
Я c В настоящее время использование touchsMoved и перемещение UIView в расположение пальцев (я называю это fingerLocationRect
).
Когда я обновляю (1 из 400 миниатюрных UIViews) цвет Пиксель, я делаю так, проверяя, если fingerLocationRect
является пересечением любой один из моих UIView прямоугольников. Если я обновляю цвет.
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint currentPosition = [touch locationInView:self.view];
fingerLocationRect.center = CGPointMake(currentPosition.x, currentPosition.y);
int tagID = 1;
while (tagID <= 400) {
if(CGRectIntersectsRect(fingerLocationRect.frame, [drawingView viewWithTag:tagID].frame)) {
[drawingView viewWithTag:tagID].backgroundColor = [UIColor colorWithRed:redVal/255.f green:greenVal/255.f blue:blueVal/255.f alpha:1.f];
}
tagID ++;
}
}
Проблема заключается в том, что touchesMoved не обновляется очень часто ... так что, если я перетащить пальцем по холсту только как 5 из пикселей изменить вместо 40 я на самом деле прикоснулся.
Я интересно, если с помощью CGRectIntersectsRect
с touchesMoved
является лучшим способом обнаружить, если пользователь горок в UIView ... Сейчас это не обновляется почти достаточно быстро, и я получаю результат слева, а не справа. (Я только достичь эффекта на право, если я пошевелить пальцем очень медленно ...)
Все, что сказал, есть способ обнаружения, когда пользователь скользит по UIView другой чем использовать touchesMoved
? Если нет, какие-либо идеи о том, как захватить все UIViews между точками касания, возвращенными touchhesMoved? У меня есть все теги 1-400 (первый ряд 1-10, второй ряд 11-21 и т. Д.)
P.s. если panGestureRecognizer
обновляется чаще, чем touchesMoved
?
Чтобы получить представление о том, что на 400 UIViews выглядят как здесь все они с arc4random
цветов на основе:
Блестящий !! :) :) :) :) Это на самом деле метод, который я могу применить к моим плиткам на основе игр, над которыми я тоже работаю! –