2011-12-05 8 views
0

私はiPhoneのメールアプリケーションのように、気泡を作りたいと思います。しかし、多くの気泡(> 10)は視野のスクロールを大幅に遅くします。カスタムメール「気泡」スクロールスクロール

私の実装に関することを少し言及してください:私はカスタムビューを作成し、それに "bubbles"を追加します。

... 

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]; 
+0

そして、一度スクロールを処理する通常のメカニズムを残しています(例えば、スクロールビューに引用されたコードに 'self'を終えるビューを追加し、スクロールビューですべてのものを処理させる) ? – Tommy

+1

私の推測では、グラデーションと境界線が高すぎるか、または「泡」を再利用していないということです(あなたですか?)。私はコアグラフィックスでこれらのバブルを描くために使ったクラスを使って答えを投稿しました。見てみな。 – EmilioPelaez

+0

@Tommyはい、まさに!私は一度それらを作成します。 – JastinBall

答えて

1

あなたはこのクラスを試してみてください:https://github.com/tmdvs/TDBadgedCell

それはあなたのスクロールを遅らせるべきではありませんので、それはコアグラフィックスを使用していますので、それは非常に高速です。

関連する問題