8

テーブルビューの各セルにUILabelを追加しています。これは最初は問題ありません。layer.cornerRadiusテーブルビューのスクロールを使用してUILabelの角を丸めると、停止します。

 UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(cell.bounds.origin.x+10 ,5, 30, 30)];
 label1.backgroundColor = ([[managedObject valueForKey:@"color"] hasPrefix:@"FFFFFF"]) ? [UIColor blackColor] : color;
 label1.layer.cornerRadius = 10.0f;
 [cell addSubview:label1];
4

3 に答える 3

15

角が丸い画像は必要ありません。この質問に対するfknrdclsの回答を参照してください。

UILabelレイヤーcornerRadiusがパフォーマンスに悪影響を与える

基本的には、ラベルに透明な背景を付け、代わりに背景色をレイヤーに追加するだけです。次に、を無効maskToBoundsにできます。これにより、パフォーマンスが大幅に向上します。したがって、コードは次のようになります。

UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(cell.bounds.origin.x+10 ,5, 30, 30)];
label1.backgroundColor = [UIColor clearColor];
label1.layer.backgroundColor=[UIColor whiteColor].CGColor;
label1.layer.cornerRadius = 10.0f;
label1.layer.masksToBounds = NO;
label1.layer.shouldRasterize = YES;
于 2011-09-20T15:05:13.883 に答える
7

私は自分の前でこれを試しましたが、動くどんな種類のビューにも役に立たないことがわかりました。角が丸い画像を作成し、代わりにそれをラベルの背景として追加する必要があります。

于 2010-02-13T09:49:08.480 に答える
0

UIImageViewの場合、背景色だけでなく画像もトリミングする必要があるため、UILabelのトリックは機能しませんでした。私が見つけた最も簡単な解決策は、アニメーション化するたびにビューの親をラスタライズすることでした(スライドパネルがあります)。

于 2013-02-27T15:39:07.560 に答える