2013-10-16 10 views
12

私は現在、UIAppearance修飾語*の複雑なウェブを回転させていますが、問題を抱えています。UIAppearanceの「含まれていない場合」

FlatUIKitのカスタムUIBarButtonの外観プロトコルを使用しているため、MFMailComposerViewControllerは不平を言って動作を停止しています。

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

* 私は、アプリケーションのデリゲートでオブジェクトの外観設定を事前定義するために使用されるUIAppearanceプロトコルについて話しています。あなたはデフォルトの外観を与えるであろう、nilの変更を指定するappearanceWhenContainedIn:を使用することができます

答えて

14

:iOSの9 SDKのよう

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

を、

Swift-を使用することができます
[[UIBarButton appearance] setBarTintColor:[UIColor redColor]]; 
[[UIBarButton appearanceWhenContainedInInstancesOfClasses:@[[MFMailComposerViewController class]] setBarTintColor:nil]; 

もあります2ように:

UIBarButton.appearance().barTintColor = UIColor.redColor() 
UIBarButton.appearanceWhenContainedInInstancesOfClasses([MFMailComposerViewController.self]).barTintColor = nil 
0

私はこの1つを使ってhは、

[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTextColor:[UIColor darkGrayColor]]; 
0

私のソリューションは、メインUIWindowサブビュー(ウィンドウのルートビューコントローラまたは提示ビュー・コントローラ)としてアプリで使用されているすべてのコンテナビューコントローラのカスタムサブクラスを作成することで、iOSの10で動作しますUINavigationController,UITabBarControllerまたはUISplitViewControllerなどです。

アプリがUINavigationControllerのみを使用しているとします。サブクラスを作成します。

class CustomizedNavigationController: UINavigationController {} 

次にアプリでどこでもCustomizedNavigationController代わりの平野UINavigationControllerを使用しています。サブクラスを使用していない

UIBarButtonItem.appearance(whenContainedInInstancesOf: 
          [CustomizedNavigationController.self]) 

MFMailComposerViewControllerので、それはカスタマイズされた得ることはありません。

また、代わりにすべてのUIBarButtonの外観を指定する、サブクラスに含まれる唯一の外観を指定します。

関連する問題