2009-04-08 13 views
11
単にテキストとラベルが付いたサブビューを追加すべきですか?
+0

は【こちら】(http://www.spaulus.com/2010/09/create-a-custom-iphone-ipad-badge/?lang=en)私自身のalternativです。楽しい! – Sascha

答えて

1

はい、現在のUITableViewセルにバッジを追加することのないサポートされている方法はありません。この例では、画像とUILabelを含むカスタムサブビューの可能性が最も高いです。

1

私は、カスタマイズされたバッジを作成するために、別の選択肢を追加したいと思います。 CustomBadgeはもう少し強力です。オープンで無料です。

2

私にとっては最も簡単なcell.accessoryViewを使用します。私はそれをやった私のコードに見てください:

UIImageView * commentsViewBG = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"counter1.png"]]; 
commentsViewBG.frame = CGRectMake(
    commentsViewBG.frame.origin.x, 
    commentsViewBG.frame.origin.y, 30, 20); 


UILabel *commentsCount; 
if (commentsArray.totalCount < 10) 
    commentsCount = [[UILabel alloc]initWithFrame:CGRectMake(10, -10, 40, 40)]; 
else if (commentsArray.totalCount < 100) 
    commentsCount = [[UILabel alloc]initWithFrame:CGRectMake(5, -10, 40, 40)]; 
else if (commentsArray.totalCount < 1000) 
{ 
    commentsViewBG.frame = CGRectMake(
     commentsViewBG.frame.origin.x, 
     commentsViewBG.frame.origin.y, 40, 20); 
    commentsCount = [[UILabel alloc]initWithFrame:CGRectMake(5, -10, 40, 40)]; 
} 
commentsCount.text = [NSString stringWithFormat:@"%ld",(long)commentsArray.totalCount]; 
commentsCount.textColor = [UIColor whiteColor]; 
commentsCount.backgroundColor = [UIColor clearColor]; 
[commentsViewBG addSubview:commentsCount]; 
cell.accessoryView = commentsViewBG; 

そして、私の結果:

enter image description here

はそれがお役に立てば幸いです。

+0

は、複数の質問に正確に同じ答えを投稿しないでください:それはすべて、または質問のために良いフィットのどちらかだではないフラグが付けする必要があります重複が/のような閉鎖されています。 –

+0

それは簡単に見つけることができた場合、私は多くの問題が表示されません。重複した質問がGoogleで最初に表示されることがあり、フラグが立っていても、より良い回答が得られることがあります。 – Samin

2

TDBadgedCellはかなり良い選択です。ニーズに合わせて高度にカスタマイズ可能。ここで

4

は、@ POFの答えに迅速強化です。我々は、多くのサブビューを必要としないと、私たちだけではなく1-3、N桁をサポートするために数学を使用することができます。

func setDiscountBadge(count: Int) { 
    let size: CGFloat = 26 
    let digits = CGFloat(count("\(number)")) // digits in the label 
    let width = max(size, 0.7 * size * digits) // perfect circle is smallest allowed 
    let badge = UILabel(frame: CGRectMake(0, 0, width, size)) 
    badge.text = "\(number)" 
    badge.layer.cornerRadius = size/2 
    badge.layer.masksToBounds = true 
    badge.textAlignment = .Center 
    badge.textColor = UIColor.whiteColor() 
    badge.backgroundColor = cfg.UIColors.brand 
    YOURCELL.accessoryView = badge // !! change this line 
} 

そして結果(私はブランドカラーを使用しますが、あなたはどの色にすることができます):

uilabel badge

関連する問題