আইওএস 9 এর জন্য আপডেট করুন:
আপনি যদি আইওএস 9+ (এক্সকোড 7 বি 1 হিসাবে) টার্গেট করে থাকেন তবে UIAppearance
প্রোটোকলে একটি নতুন পদ্ধতি রয়েছে যা ভারার্গস ব্যবহার করে না:
static func appearanceWhenContainedInInstancesOfClasses(containerTypes: [AnyObject.Type]) -> Self
যা এর মতো ব্যবহার করা যেতে পারে:
UITextField.appearanceWhenContainedInInstancesOfClasses([MyViewController.self]).keyboardAppearance = .Light
আপনার যদি এখনও আইওএস 8 বা তার আগে সমর্থন করতে হয় তবে এই প্রশ্নের নিম্নলিখিত মূল উত্তরটি ব্যবহার করুন।
আইওএস 8 এবং 7 এর জন্য:
এই পদ্ধতিগুলি সুইফটের কাছে উপলভ্য নয় কারণ ওবজ-সি ভারাজ পদ্ধতিগুলি সুইফটের সাথে সামঞ্জস্যপূর্ণ নয় (দেখুন http://www.openradar.me/17302764 )।
আমি একটি ভিন্ন-বৈচিত্র্যময় কার্যপত্রক লিখেছিলাম যা সুইফটে কাজ করে (আমি একই পদ্ধতির পুনরাবৃত্তি করেছি 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 2.x:
UITextField.my_appearanceWhenContainedIn(MyViewController.self).keyboardAppearance = .Light
# Swift 3.x:
UITextField.my_appearanceWhenContained(in: MyViewController.self).keyboardAppearance = .light