[解決済み] Swiftの外観WhenContainedIn
2022-08-15 07:51:06
質問
自分のアプリをSwift言語に変換しようとしています。
このようなコード行があります。
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]
setTitleTextAttributes:textDictionary
forState:UIControlStateNormal];
Swiftに変換するには?
で Appleのドキュメント では、そのようなメソッドはありません。
どのように解決するのですか?
iOS 9にアップデートしてください。
iOS 9+ (Xcode 7 b1 時点) をターゲットにしている場合、新しいメソッドが
UIAppearance
プロトコルに新しいメソッドがあり、これは可変長引数を使用しません。
static func appearanceWhenContainedInInstancesOfClasses(containerTypes: [AnyObject.Type]) -> Self
というように使うことができる。
UITextField.appearanceWhenContainedInInstancesOfClasses([MyViewController.self]).keyboardAppearance = .Light
それでもiOS8以前をサポートする必要がある場合は、以下のオリジナル回答をご利用ください。
iOS 8 & 7 の場合です。
Obj-CのvarargsメソッドはSwiftと互換性がないため、これらのメソッドはSwiftで利用できません( http://www.openradar.me/17302764 ).
私はSwiftで動作する非変数的な回避策を書きました(私は同じ方法を繰り返して
UIBarItem
から降下しない
UIView
):
// UIAppearance+Swift.h
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIView (UIViewAppearance_Swift)
// appearanceWhenContainedIn: is not available in Swift. This fixes that.
+ (instancetype)my_appearanceWhenContainedIn:(Class<UIAppearanceContainer>)containerClass;
@end
NS_ASSUME_NONNULL_END
-
// UIAppearance+Swift.m
#import "UIAppearance+Swift.h"
@implementation UIView (UIViewAppearance_Swift)
+ (instancetype)my_appearanceWhenContainedIn:(Class<UIAppearanceContainer>)containerClass {
return [self appearanceWhenContainedIn:containerClass, nil];
}
@end
ただ、必ず
#import "UIAppearance+Swift.h"
をブリッジングヘッダーに追加してください。
次に、Swiftから呼び出す場合(例)。
# Swift 2.x:
UITextField.my_appearanceWhenContainedIn(MyViewController.self).keyboardAppearance = .Light
# Swift 3.x:
UITextField.my_appearanceWhenContained(in: MyViewController.self).keyboardAppearance = .light
関連
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] Swift言語におけるエクスクラメーションマークの意味とは?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] 純粋な」Swift で弱いプロトコル参照を作るには (@objc なしで) どうしたらいいですか?
-
[解決済み] Swiftでdispatch_onceのシングルトンモデルを使う
-
[解決済み] NSNotificationCenterのaddObserver in Swift
-
[解決済み] UITextFieldのテキストインセット?
-
[解決済み] Swiftの配列を文字列に変換するには?
-
[解決済み】iOSアプリの名前を変更する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] UITextFieldのテキスト変更イベント
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] iOS - UITextFieldの外側をタッチするとキーボードが外れる。
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?
-
[解決済み] iPhoneでナビゲーションバーを1ページ目だけ非表示にする
-
[解決済み】Swiftでプレースホルダーの文字色を変更する方法