this と同じ質問ですが、その質問は回避されました(NDAのため)であり、アクティブではありません。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** Illegal property type, c for appearance setter, _installAppearanceSwizzlesForSetter:'
これを最初のView ControllerのviewDidLoad
で設定しています。 setTranslucent
はオートコンプリートで表示され、クラッシュしてスウィズルなどについて話すまで文句を言いません。
これに関する情報は素晴らしいでしょう、私はまだアプリ全体で一貫したステータスバーの外観を得るのに非常に苦労しています。
translucent
プロパティは、UIAppearance
を使用して設定することはできないようです。正確な理由はわかりませんが、一部のプロパティはサポートされていません。ただし、カスタムUIViewController
を作成し、アプリ内の他のすべてのviewControllerをそのカスタムviewControllerのサブクラスにすることでこれを解決しました。そうすれば、アプリ内の他のすべてのviewControllerによって継承されるグローバルプロパティ(あなたの場合はtranslucent
など)を設定できます。私はそれが一種の大きな変化であることを知っていますが、それが役立つことを願っています。
**** [〜#〜] edit [〜#〜] ****
IOS 8では、UIAppearanceを使用して半透明性を設定できます。
客観的C
if([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
[[UINavigationBar appearance] setTranslucent:YES];
}
Swift
if (UIDevice.currentDevice().systemVersion as NSString).floatValue >= 8.0 {
UINavigationBar.appearance().translucent = true
}
ただし、存在しないイメージを指定することで、ツールバーを不透明にすることができます。
[[UIToolbar appearance] setBackgroundColor:[UIColor colorWithRed:219.0/255.0 green:67.0/255.0 blue:67.0/255.0 alpha:1.0]];
[[UIToolbar appearance] setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
不正な方法を使用しているため、クラッシュします。 UIAppearance
には、
To participate in the appearance proxy API, tag your appearance property selectors in your header with UI_APPEARANCE_SELECTOR.
[[XXX appearance] method]
を使用する場合、メソッドmethodには属性UI_APPEARANCE_SELECTORが必要です。そうでない場合は例外がスローされ、translucent
には含まれません。
しかし、私を困惑させているのは、[[XXX appearance] method]
はiOS8では大丈夫ですが、iOS7ではクラッシュし、Appleドキュメントはそれを言っていません。
あなたの質問に対する答えがわかりません。Googleからここに来ましたが、Navigation Controllerを使用している場合、この行ですべての半透明度を変更できます。
[self.navController.navigationBar setTranslucent:NO];
クラスが初期化された後、半透明プロパティを変更することはできません。
[newsViewNavigationController.navigationBar setTranslucent:NO];
私はこのようなことをしましたが、うまくいきました!