У меня очень странная проблема.Я делаю сетку из UIImageViews (в настоящее время 16x16), каждый из которых имеет UILabel, который может содержать только один символ текста.
Я получил его, поэтому, когда вы нажимаете на него, этот текст изменяется икогда вы отпустите, он снова изменится.
Эти UILabel обновляются правильно и с правильной скоростью.
Если только я не обновляю "status" UILabel (из которых есть только одна) для моегоapp.
Этот UILabel значительно больше других, и, опять же, имеет только один экземпляр.Он расположен в верхней части экрана, и его размер равен ширине экрана и высоте 40 пикселей.
Теперь, когда я пытаюсь [labelt setText:] эта метка, она работает нормально и с правильнойскорость ... если я нажимаю на один из моих UIImageViews в верхней части экрана.Тем не менее, когда я нажимаю один из них в нижней части экрана, это занимает заметную разницу во времени.
Я удалил любую итерацию по спискам для получения UIImageViews.Он вычисляет точку, где я щелкнул по целочисленной координате (x, y), а затем выбирает надлежащий UIImageView из массива через [[array objectAtIndex: x] objectAtIndex: y].
Я сузил его до основной «статусной» UILabel как вызывающей замедление.Если я закомментирую [label setText:] для этой метки и заменю на распечатку NSLog, все идет с правильной скоростью.И снова, он движется с правильной скоростью для UIImageViews к верхней части экрана.
У кого-нибудь есть какие-либо предложения?Я знаю, что определенно не перебираю какие-либо списки здесь, поэтому я немного озадачен, почему это замедление происходит только в нижней части таблицы.
Спасибо за помощь!
Код:
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint touchPoint = [[touches anyObject] locationInView: imageView];
int x = 0;
int y = 0;
x = touchPoint.x/(screenWidth/width);
y = (touchPoint.y - OFFSET)/(screenHeight/height);
if ( [self outOfBoundsWithX:x Y:y] ) {
if ( !isMoving && lastBead != nil ) {
[self releaseBead:lastBead];
}
lastPoint = CGPointZero;
lastBead = nil;
}
else {
if ( !isMoving && lastBead != nil ) {
NSLog(@"TEST");
[self releaseBead:lastBead];
}
else {
Bead * b = [self getBeadAtX:x Y:y];
[self releaseBead:b];
}
}
}
- (void) releaseBead:(Bead*)b
{
[b setGlyph:'c'];
if (statusText == "Test") {
[self setStatus:"Woohoo!"];
else {
[self setStatus:"Text"];
}
}
- (void) setStatus:(char*)status
{
label.text = [NSString stringWithCString:status encoding:NSASCIIStringEncoding];
statusText = status;
}