1

私のアプリの 1 つで、クライアントがリクエストを行う場合 (ブランド化されたアプリケーションであるため、通常はリクエストを行います)、カスタム テーマを許可しています。単純に配色を変更するだけで済む場合もあるので、プロセスを簡素化する方法はないかと考えていました。たとえば、ColourStyle という名前のクラスがあり、その色のプロパティ値を指定してから、それを他のクラスにインポートした場合、この 1 つのクラスを編集するだけで他のクラスが自然に色のベースになるように設定できますか? ColourStyle に設定されている値は?

これは実現可能でしょうか、それとももっと簡単な方法がありますか?

4

5 に答える 5

3

CSS に似た構文を使用してアプリのスタイルを設定してください! https://github.com/tombenner/nui

于 2012-12-11T00:05:13.413 に答える
2

これを正確に行うことができる Swift ライブラリを作成しました。さらに、おまけとして、スタイルをストーリーボード キャンバスにライブでレンダリングします。

https://github.com/daniel-hall/スタイリッシュ

于 2016-06-10T16:53:59.690 に答える
1

UIAppearanceは 1 つの方法ですが、何か新しいものを作成/使用することで、スタイリング エンジンのさまざまなプロパティ (以前のスタイル アプリケーションやスタイル構成など) を実現できます。

私のアプローチでは、次のようにスタイルをサブクラスに適用できます。

final class TitleLabel: UILabel, TitleFontStyle {}
final class BodyLabel: UILabel, BodyFontStyle, MultilineLabelStyle {}
final class CaptionLabel: UILabel, CaptionFontStyle, MultilineLabelStyle {}

スタイル マーカー プロトコルは次のように定義されます。

protocol TitleFontStyle {}
protocol BodyFontStyle {}
protocol CaptionFontStyle {}
protocol MultilineLabelStyle {}

func appStyle(palette: PaletteProtocol) -> StyleProtocol {
    return StyleSheet(styles: [
        Style<TitleFontStyle, UILabel> { $0.font = palette.fonts.titleFont },
        Style<BodyFontStyle, UILabel> { $0.font = palette.fonts.bodyFont },
        Style<CaptionFontStyle, UILabel> { $0.font = palette.fonts.captionFont },
        Style<MultilineLabelStyle, UILabel> { $0.numberOfLines = 0 }
    ])
}

完全な使用例については、サンプルプロジェクトを参照してください。

実装の詳細についてはStyle.swift、 および を参照してくださいRootStyle.swift

StyleSheetマイクロフレームワーク ( Carthageおよび CocoaPods と互換性があります!)でこのアプローチを試してください。

于 2016-11-12T12:30:32.900 に答える
1

これを行う方法の 1 つは、新しい Appearance API を適応させることです。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html

Apple の開発者ポータルにログインすると、これに関する良い話とスライドがあります。高度な UI カスタマイズを検索します。

于 2012-12-11T00:02:57.563 に答える
1

iOS5+ には、さまざまな UI 要素の外観品質をグローバルに制御できる「外観マネージャー」があります。ここにチュートリアルがあります: http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

外観プロキシが提供できる以上のカスタマイズが必要な場合は、UILabel などのサブクラスを作成し、カスタマイズ用の独自のメソッドを提供する必要があります。残念ながら、UIButton のようなものは単純にサブクラス化できません。自分で巻く必要があるかもしれません。

于 2012-12-11T00:03:27.223 に答える