標準的な外観のバッジを標準のUIButton
に追加することはできますか?
半ネイティブでサポートされていない場合、これを達成する最も簡単な方法は何ですか?
サンプル画像:
以下はSascha Paulusによる CustomBadge と呼ばれる非常に素晴らしいクラスで、Core Graphicsを使用してカスタムバッジを作成およびレンダリングします。 UIViewサブクラスに過ぎないため、他のUIViewサブクラスと同じようにフレームを使用してレイアウトします。
私はこのライブラリを何度も使用しましたが、常に結果に満足しています。柔軟で使いやすい。完全にお勧めします。
ここでいくつかのオプションを確認できます。 CocoaControls Badges
Appleが使用するクラスは_UIBadgeView
( https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h )しかし、もちろんこのクラスはprivate(アンダースコアに注意してください)、文書化されていません。
Appleと同じルックアンドフィールでこのビューを実装し、カスタマイズすることもできる別のクラスを次に示します。 https://github.com/JaviSoto/JSBadgeView 。これの素晴らしいところは、バッジを別のビューに対して、コーナーの1つに自動的に配置できることです。
Nimbusには、非常に使いやすく、十分に文書化されたバッジビューがあります。
私はこれが箱から出してどのように行われるかわかりません、そして、私は正直にAppleそれをSDKに組み込みました。
とにかく、ボタンが付いたカスタムビューを作成し、バッジの背景をUIImageViewとして追加し、バッジカウントを保持するラベルをその上に配置できます。
これは簡単な解決策です。UIButton
のカスタムサブクラスを作成し、バッジのものをサブビューとして追加することをお勧めします
@BjörnKaiserと同様の方法で行います。好きなようにボタンを使用し、そのバッジをサブビューとしてカスタムビューを追加します。
ビューについては、好きなように描くことができます。手動で描画するか、CoreAnimationを使用してメインパーツ、つまりtheBadge.layer.cornerRadius = ...;
丸い形にするために、drawRect:
またはラベルなどとして追加します。