iOSの「クリック可能な」領域はボタンであるべきですか、それとも一般的なUIView、UIImageなどを使用しても問題ありませんか?
アイコン、境界線、影などを含むテキストのブロックがあるとします。ビルボードみたいですね。それを実装する最良の方法は何ですか?カスタムUIButtonを使用してサブビューを追加するだけですか、それとも汎用UIViewを作成するだけですか?
どんな考えでも大歓迎です!
iOSの「クリック可能な」領域はボタンであるべきですか、それとも一般的なUIView、UIImageなどを使用しても問題ありませんか?
アイコン、境界線、影などを含むテキストのブロックがあるとします。ビルボードみたいですね。それを実装する最良の方法は何ですか?カスタムUIButtonを使用してサブビューを追加するだけですか、それとも汎用UIViewを作成するだけですか?
どんな考えでも大歓迎です!
おそらく、複数のサブビューを含むビューの場合、UIView
サブクラスを使用する必要があります。UIButton
ビューの追加、状態の変更、有効化/無効化はビュー全体(サブビューを含む)に奇妙なことをする可能性があります。独自のUIView
サブクラスを使用すると、表示される内容が状態の変化によっていじられないようになり、完全に制御できるようになります。オーバーライドできます
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
カスタムビューへのタッチをインターセプトします。これを行う場合は、userInteractionEnabledフィールドをtrueに設定する必要があることに注意してください。
追記:質問の要素の1つとして影について言及しました。CALayer
これを行うために使用している場合は、さまざまな状態を処理するためのレイヤーのセットが非常に複雑であるため、UIButtonの使用は絶対に避けてください。
ターゲット領域が十分に大きい場合は、クリック可能なビューの上に透明な UIButton (ボタンの種類をカスタムに切り替えますが、画像は提供しません) を配置して、タップをインターセプトできます。