Пользовательская почта "пузыри" замедляет прокрутку - PullRequest
0 голосов
/ 05 декабря 2011

Я хочу создать пузыри, как в почтовом приложении на iphone. Но большое количество пузырьков (> 10) сильно замедляет прокрутку.

Несколько слов о моей реализации: я создаю собственный вид и добавляю к нему "пузыри". Вот как я создаю каждый «пузырь»:

...

self.gradient = [[CAGradientLayer alloc] init];
self.gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:223.0f/255.0f 
                                                                      green:232.0f/255.0f 
                                                                       blue:247.0f/255.0f 
                                                                      alpha:1.0f] CGColor],
                                                 (id)[[UIColor colorWithRed:189.0f/255.0f 
                                                                      green:207.0f/255.0f 
                                                                       blue:240.0f/255.0f 
                                                                      alpha:1.0f] CGColor], nil];
[self.layer insertSublayer:gradient atIndex:0];

// Border for "bubble"
[self.layer setBorderWidth:1.0f];
[self.layer setBorderColor:[UIColor colorWithRed:120.0f/255.0f 
                                           green:134.0f/255.0f 
                                            blue:214.0f/255.0f 
                                           alpha:1.0f].CGColor];    
[self.layer setCornerRadius:12.0f];
[self.layer setMasksToBounds:YES];

// Label for text of "bubble"
self.label = [[UILabel alloc] init];
[self.label setText:text];
[self.label setBackgroundColor:[UIColor clearColor]];
[self.label setTextAlignment:UITextAlignmentCenter];
[self.label setFont:[UIFont systemFontOfSize:14.0f]];
[self addSubview:label];

...

Когда я комментирую добавление градиента и границы - все работает отлично! Заранее спасибо!

P.S. Мне было рекомендовано добавить следующий код, но это не увеличило производительность.

[self.layer setShouldRasterize:YES];
[self.layer setRasterizationScale:[UIScreen mainScreen].scale];

1 Ответ

1 голос
/ 05 декабря 2011

Вы должны попробовать этот класс: https://github.com/tmdvs/TDBadgedCell

Это довольно быстро, потому что использует Core Graphics, поэтому не должно замедлять прокрутку.

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