1. ホーム
  2. ios

[解決済み] iPhoneで角丸のUILabelを作成するにはどうすればよいですか?

2022-04-29 08:53:23

質問

角丸のUILabelsを作成する方法は組み込まれているのでしょうか?もし答えがノーなら、そのようなオブジェクトを作成するにはどうしたらよいでしょうか?

どのように解決するのですか?

iOS 3.0以降

iPhone OS 3.0以降では cornerRadius プロパティに CALayer クラスがあります。すべてのビューは CALayer のインスタンスを操作することができます。つまり、1行で角丸を得ることができるのです。

view.layer.cornerRadius = 8;

を必要とします。 #import <QuartzCore/QuartzCore.h> を作成し、QuartzCore フレームワークにリンクして、CALayer のヘッダーとプロパティにアクセスできるようにします。

iOS 3.0以前

最近使った方法ですが、単純に丸い矩形を描くUIViewのサブクラスを作り、その中にUILabel、私の場合はUITextViewをサブビューとして作るという方法です。具体的には

  1. を作成します。 UIView のサブクラスを作成し、以下のような名前を付けます。 RoundRectView .
  2. RoundRectView 's drawRect: メソッドを使用して、エッジのための CGContextAddLineToPoint() や角丸のための CGContextAddArcToPoint() などの Core Graphics コールを使用してビューの境界の周りにパスを描画します。
  3. を作成します。 UILabel インスタンスを作成し、RoundRectViewのサブビューとします。
  4. ラベルの枠をRoundRectViewの枠から数ピクセル内側に設定します。(例 label.frame = CGRectInset(roundRectView.bounds, 8, 8); )

汎用UIViewを作成し、インスペクタでクラスを変更すれば、Interface BuilderでRoundRectViewをビューに配置することができます。アプリをコンパイルして実行するまで矩形は見えませんが、少なくとも、サブビューを配置し、必要に応じてアウトレットやアクションに接続することができるようになります。