web-dev-qa-db-ja.com

標準UIButtonにバッジを追加するにはどうすればよいですか?

標準的な外観のバッジを標準のUIButtonに追加することはできますか?

半ネイティブでサポートされていない場合、これを達成する最も簡単な方法は何ですか?

サンプル画像:

An iPhone UI button

70
ohadpr

以下はSascha Paulusによる CustomBadge と呼ばれる非常に素晴らしいクラスで、Core Graphicsを使用してカスタムバッジを作成およびレンダリングします。 UIViewサブクラスに過ぎないため、他のUIViewサブクラスと同じようにフレームを使用してレイアウトします。

私はこのライブラリを何度も使用しましたが、常に結果に満足しています。柔軟で使いやすい。完全にお勧めします。

78
Dan Ray

ここでいくつかのオプションを確認できます。 CocoaControls Badges

7
Carlos Ricardo

Appleが使用するクラスは_UIBadgeViewhttps://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h )しかし、もちろんこのクラスはprivate(アンダースコアに注意してください)、文書化されていません。

Appleと同じルックアンドフィールでこのビューを実装し、カスタマイズすることもできる別のクラスを次に示します。 https://github.com/JaviSoto/JSBadgeView 。これの素晴らしいところは、バッジを別のビューに対して、コーナーの1つに自動的に配置できることです。

3
Javier Soto

Nimbusには、非常に使いやすく、十分に文書化されたバッジビューがあります。

NimbusBadge

2
featherless

私はこれが箱から出してどのように行われるかわかりません、そして、私は正直にAppleそれをSDKに組み込みました。

とにかく、ボタンが付いたカスタムビューを作成し、バッジの背景をUIImageViewとして追加し、バッジカウントを保持するラベルをその上に配置できます。

これは簡単な解決策です。UIButtonのカスタムサブクラスを作成し、バッジのものをサブビューとして追加することをお勧めします

1
Björn Kaiser

@BjörnKaiserと同様の方法で行います。好きなようにボタンを使用し、そのバッジをサブビューとしてカスタムビューを追加します。

ビューについては、好きなように描くことができます。手動で描画するか、CoreAnimationを使用してメインパーツ、つまりtheBadge.layer.cornerRadius = ...;丸い形にするために、drawRect:またはラベルなどとして追加します。

1
Eiko