13

私は現在、UIAppearanceモディファイア*の複雑なウェブを紡いでいますが、問題に遭遇しました。

FlatUIKit のカスタムUIBarButtonアピアランス プロトコルを使用すると、問題が発生MFMailComposerViewControllerし、機能しなくなります。

UIAppearanceしたがって、のwhenContainedInメソッドを使用して変更が発生するクラスを指定する代わりに、特定のクラスを除外する方法、つまり「含まれていない場合」はありますか?

*アプリのデリゲートでオブジェクトの外観設定を事前に定義するために使用されるプロトコルについて話しています。UIAppearance

4

3 に答える 3

15

を使用appearanceWhenContainedIn:して nil 変更を指定できます。これにより、デフォルトの外観が得られます。

[[UIBarButton appearance] setBarTintColor:[UIColor redColor]];
[[UIBarButton appearanceWhenContainedIn:[MFMailComposerViewController class], nil] setBarTintColor:nil];

iOS 9 SDK の時点では、

[[UIBarButton appearance] setBarTintColor:[UIColor redColor]];
[[UIBarButton appearanceWhenContainedInInstancesOfClasses:@[[MFMailComposerViewController class]] setBarTintColor:nil];

Swift-2 は次のように使用できます。

UIBarButton.appearance().barTintColor = UIColor.redColor()
UIBarButton.appearanceWhenContainedInInstancesOfClasses([MFMailComposerViewController.self]).barTintColor = nil
于 2013-10-16T16:33:35.673 に答える