Label ja - Tai-Kimura/SwiftJsonUI GitHub Wiki
class: SJUILabel
inherits: UILabel
| 属性名 | UIKit | SwiftUI | Compose | XML | jsonでの型 | 詳細 | 備考 |
|---|---|---|---|---|---|---|---|
| edgeInset | ✅ | ✅ | ❌ | ✅ | string/array | Float配列または「 | 」で区切られた文字列がlabel.paddingに設定されます。 配列のサイズが1の場合、同じ値がすべての位置に適用されます。 配列のサイズが2の場合、最初の値が上下に、2番目の値が左右に設定されます。 配列のサイズが3の場合、インデックスと位置は: 0: 上 1: 左右 2: 下 配列のサイズが4の場合、インデックスと位置は: 0: 上 1: 左 2: 下 3: 右 |
| lines | ✅ | ✅ | ✅ | ✅ | integer | label.numberOfLines。 | |
| lineBreakMode | ✅ | ✅ | ❌ | ❌ | string | label.lineBreakMode。オプション: Char: NSLineBreakMode.byCharWrapping Clip: NSLineBreakMode.byClipping Word: NSLineBreakMode.byWordWrapping Head: NSLineBreakMode.byTruncatingHead Middle: NSLineBreakMode.byTruncatingMiddle Tail: NSLineBreakMode.byTruncatingTail |
|
| textAlign | ✅ | ✅ | ✅ | ✅ | string | paragraphStyle.alignment。オプション: Left: NSTextAlignment.left Right: NSTextAlignment.right Center: NSTextAlignment.center |
|
| underline | ✅ | ✅ | ❌ | ❌ | JSON | アンダーラインのJSON。利用可能な属性はこちら | |
| strikethrough | ✅ | ✅ | ❌ | ❌ | JSON | 取り消し線のJSON。利用可能な属性はこちら | |
| lineHeightMultiple | ✅ | ✅ | ❌ | ❌ | float | paragraphStyle.lineHeightMultiple。 | |
| font | ✅ | ✅ | ✅ | ✅ | string | ラベルのフォント名。 | |
| fontSize | ✅ | ✅ | ✅ | ✅ | float | ラベルのフォントサイズ。 | |
| fontColor | ✅ | ✅ | ✅ | ✅ | string | NSAttributedStringKey.foregroundColor。 | |
| textShadow | ✅ | ✅ | ❌ | ❌ | string | NSAttributedStringKey.shadow。利用可能なキー: color: shadowColor(16進文字列) offset: shadowOffset.xが最初の値、shadowOffset.yが2番目の値(float配列) blur: shadowBlurRadius(float) |
|
| text | ✅ | ✅ | ✅ | ✅ | string | NSLocalizedString(text, comment:"")がattributedTextに設定されます。 | |
| partialAttributes | ✅ | ✅ | ❌ | ❌ | JSON array | テキストの部分属性。利用可能な属性はこちら | |
| highlightAttributes | ✅ | ✅ | ❌ | ❌ | JSON | テキストのハイライト属性。これらの属性はapplyAttributedTextが呼び出され、選択されている場合に適用されます。利用可能な属性:font、fontSize、fontColor | |
| highlightColor | ✅ | ✅ | ❌ | ❌ | string | 選択状態のフォント色。highlightAttributesが定義されている場合、この属性は無視されます。 | |
| hintAttributes | ✅ | ✅ | ❌ | ❌ | JSON | テキストのヒント属性。これらの属性はヒントが表示される際に適用されます。利用可能な属性:font、fontSize、fontColor | |
| hintColor | ✅ | ✅ | ❌ | ❌ | string | ヒントのフォント色。hintAttributesが定義されている場合、この属性は無視されます。 | |
| autoShrink | ✅ | ✅ | ❌ | ❌ | boolean | label.adjustsFontSizeToFitWidth。 | |
| minimumScaleFactor | ✅ | ✅ | ❌ | ❌ | float | label.minimumScaleFactor。 この属性はautoShrinkがtrueの場合にのみ有効です。 |
|
| onclick | ✅ | ✅ | ✅ | ✅ | string | この属性でonclickイベントを定義できます。この属性で作成されたセレクターがUITapGestureRecognizerに設定され、UITapGestureRecognizerがラベルに追加されます。 | |
| linkable | ✅ | ✅ | ❌ | ❌ | boolean | label.linkable。trueの場合、テキスト内のURLがクリック可能になります。 | |
| hint | ✅ | ✅ | ✅ | ✅ | string | ラベルのテキストが空の場合に表示するヒントテキスト。 |
| 属性名 | 制約情報での データ型 |
JSONでの 型 |
詳細 | 備考 |
|---|---|---|---|---|
| lineStyle | - | string | NSAttributedStringKey.underlineStyle。リストは以下の通り。 Single: NSUnderlineStyle.styleSingle Double: NSUnderlineStyle.styleDouble Thick: NSUnderlineStyle.styleThick None: NSUnderlineStyle.styleNone デフォルトはNSUnderlineStyle.styleSingle |
|
| color | - | string | NSAttributedStringKey.underlineColor。 | |
| lineOffset | - | string | NSAttributedStringKey.baselineOffset。 |
| 属性名 | 制約情報での データ型 |
JSONでの 型 |
詳細 | 備考 |
|---|---|---|---|---|
| lineStyle | - | string | NSAttributedStringKey.strikethroughStyle。リストは以下の通り。 Single: NSUnderlineStyle.styleSingle Double: NSUnderlineStyle.styleDouble Thick: NSUnderlineStyle.styleThick None: NSUnderlineStyle.styleNone デフォルトはNSUnderlineStyle.styleSingle |
|
| color | - | string | NSAttributedStringKey.strikethroughColor。 |
| 属性名 | 制約情報での データ型 |
JSONでの 型 |
詳細 | 備考 |
|---|---|---|---|---|
| font | - | string | ラベルのフォント名。 | |
| fontSize | - | float | ラベルのフォントサイズ。 | |
| fontColor | - | string | NSAttributedStringKey.foregroundColor。 | |
| lineSpacing | - | float | paragraphStyle.lineSpacing。 | |
| lineHeightMultiple | - | float | paragraphStyle.lineHeightMultiple。 | |
| lineBreakMode | - | string | label.lineBreakMode。オプション: Char: NSLineBreakMode.byCharWrapping Clip: NSLineBreakMode.byClipping Word: NSLineBreakMode.byWordWrapping Head: NSLineBreakMode.byTruncatingHead Middle: NSLineBreakMode.byTruncatingMiddle Tail: NSLineBreakMode.byTruncatingTail |
|
| textAlign | - | string | paragraphStyle.alignment。オプション: Left: NSTextAlignment.left Right: NSTextAlignment.right Center: NSTextAlignment.center |
|
| underline | - | JSON | アンダーラインのJSON。利用可能な属性はこちら | |
| textShadow | - | string | NSAttributedStringKey.shadow。利用可能なキー: color: shadowColor(16進文字列) offset: shadowOffset.xが最初の値、shadowOffset.yが2番目の値(float配列) blur: shadowBlurRadius(float) |
|
| range | - | JSON array | 上記の属性はここで定義された範囲に適用されます。範囲内のテキストにonclickイベントを追加することもできます。 |
@{}構文を使用してpartialAttributesの範囲に動的に値をバインドできます:
{
"type": "Label",
"id": "price_label",
"text": "合計: $99.99 (20%節約)",
"data": [
{
"name": "priceStart",
"class": "Int",
"defaultValue": 4
},
{
"name": "priceEnd",
"class": "Int",
"defaultValue": 10
}
],
"partialAttributes": [
{
"fontColor": "#FF0000",
"fontSize": 20,
"font": "bold",
"range": ["@{priceStart}", "@{priceEnd}"]
},
{
"fontColor": "#00AA00",
"fontSize": 14,
"range": [12, 18]
}
]
}これにより、範囲を動的に更新するバインディングコードが生成されます:
priceLabel?.partialAttributesJSON?[0]["range"][0] = JSON(priceStart)
priceLabel?.partialAttributesJSON?[0]["range"][1] = JSON(priceEnd){
"type": "Label",
"id": "terms_label",
"text": "同意をクリックすることで、利用規約とプライバシーポリシーに同意したものとみなされます",
"fontSize": 14,
"fontColor": "#333333",
"data": [
{
"name": "termsStart",
"class": "Int",
"defaultValue": 14
},
{
"name": "termsEnd",
"class": "Int",
"defaultValue": 18
},
{
"name": "privacyStart",
"class": "Int",
"defaultValue": 19
},
{
"name": "privacyEnd",
"class": "Int",
"defaultValue": 30
}
],
"partialAttributes": [
{
"fontColor": "#0066CC",
"underline": {
"lineStyle": "Single",
"color": "#0066CC"
},
"range": ["@{termsStart}", "@{termsEnd}"],
"onclick": "openTerms"
},
{
"fontColor": "#0066CC",
"underline": {
"lineStyle": "Single",
"color": "#0066CC"
},
"range": ["@{privacyStart}", "@{privacyEnd}"],
"onclick": "openPrivacy"
}
]
}{
"type": "Label",
"id": "search_result_label",
"text": "Swiftは強力で直感的なプログラミング言語です",
"binding_group": ["search"],
"data": [
{
"name": "searchResultRanges",
"class": "[Int]",
"defaultValue": []
}
],
"partialAttributes": [
{
"fontColor": "#FF6600",
"backgroundColor": "#FFFF00",
"range": "@{searchResultRanges}"
}
]
}ViewControllerで:
// 検索ハイライトを更新
_binding.searchResultRanges = [0, 5, 11, 18] // "Swift"と"プログラミング"をハイライト
_binding.invalidateSearch()-
range配列には、@{}を使用した静的な数値または動的バインディングのいずれかを含めることができます -
rangeで@{}を使用する場合、変数はIntまたは[Int]型である必要があります - バインディングは
partialAttributesJSONプロパティを更新し、テキストがレンダリングされる際に適用されます - 同じpartialAttributes配列内で静的値と動的値を混在させることができます
open class var viewClass: SJUILabel.Typeこのプロパティは、createFromJSONメソッドでどのクラスをインフレートするかを決定するために使用されます。 SJUILabelを継承するクラスを作成する際は、このプロパティでビューのクラスを定義する必要があります。
static var defaultLinkColor: UIColorリンクのデフォルト色(blue)。linkableがtrueで色が指定されていない場合に使用されます。
static var verticalAdjustmentByFonts: [String:CGFloat]フォント別の垂直位置調整辞書。フォントごとのテキスト位置の微調整に使用されます。
public var hint: String?メインテキストが空の場合に表示されるプレースホルダーテキスト。説明は属性テーブルを参照してください。
public var selected: Bool使用する属性(通常またはハイライト)を決定する選択状態。
public var attributes: [NSAttributedString.Key:NSObject]!このプロパティはラベルの通常状態の属性を格納します。attributedTextを設定したい場合は、attributedTextを直接設定する代わりにapplyAttributedTextを呼び出してください。
このプロパティは属性付きテキストを作成するために使用されます。
public var highlightAttributes: [NSAttributedString.Key:NSObject]!applyAttributedTextが呼び出され、ラベルが選択されている場合に使用される属性。
public var hintAttributes: [NSAttributedString.Key:NSObject]?ヒントが表示される際のテキスト属性。
public var partialAttributesJSON: [JSON]?JSONベースの部分テキストスタイル設定。JSONで定義された部分属性を格納します。
public var linkable: Boolこのプロパティがtrueの場合、テキスト内のURLが自動的に検出され、クリック可能になります。
public var touchedURL: URL?リンク可能テキストでタッチされたURL。リンクがタップされた後に利用可能です。
public var linkedRanges: [[String:Any]]関連するアクションとプロパティを持つリンクテキスト範囲の配列。
public weak var touchDelegate: UIViewTapDelegate?ラベルのタッチイベントを処理するデリゲート。
public weak var linkHandleDelegate: NSObject?linkableが有効な場合のリンククリックイベントを処理するオブジェクト。
public var padding: UIEdgeInsetsテキストレンダリングの内部パディング。テキストとそのフレーム間のスペース。
override var intrinsicContentSize: CGSize { get }パディング調整を含むコンテンツサイズの計算。
override var alignmentRectInsets: UIEdgeInsets { get }適切なレイアウト配置のためのアラインメント矩形インセット。
public class func createFromJSON(attr: JSON, target: Any, views: inout [String: UIView]) -> SJUILabelラベルがJSONファイルから作成される際に呼び出されるファクトリメソッド。
SJUILabelクラスを継承するクラスを作成する際は、このメソッドをオーバーライドしてください。
open func applyAttributedText(_ text: String!)適切な属性処理でattributedTextを設定するためにこのメソッドを呼び出してください。
- 通常状態では
attributesを使用 - selectedがtrueの場合は
highlightAttributesを使用 - テキストが空でhintが提供されている場合は
hintAttributesを使用 -
partialAttributesJSONから部分属性を処理
open func applyLinkableAttributedText(_ text: String!, withColor color: UIColor = defaultLinkColor)自動リンク検出とスタイル設定でattributedTextを設定するためにこのメソッドを呼び出してください。
テキスト内のURLが指定された色でクリック可能になります。
func characterIndexAtPoint(_ touchPoint: CGPoint) -> Int?指定されたタッチポイントの文字インデックスを返します。特定のテキスト範囲でのタッチ処理に使用されます。
override func drawText(in rect: CGRect)パディングを適用し、特殊レンダリングを処理するカスタムテキスト描画実装。
override func sizeThatFits(_ size: CGSize) -> CGSize最終サイズにパディングを含むサイズ計算。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?)
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?)リンク検出とタップイベントのためのタッチ処理メソッド。
override func onBeginTap()
override func onEndTap()SJUIViewから継承されたカスタムタッチ開始・終了処理。
@objc func onLinkTap(_ sender: UITapGestureRecognizer)linkableが有効な場合のクリック可能リンクのタップイベントを処理します。