SORU
10 HAZİRAN 2014, Salı


appearanceWhenContainedİn Swift

Swift dili için benim app dönüştürmek için çalışıyorum.

Bu kod satırı var:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]
                     setTitleTextAttributes:textDictionary
                                   forState:UIControlStateNormal];

Ne kadar Hızlı dönüştürmek için?

Apple's docs, böyle bir yöntem yok.

CEVAP
6 Ocak 2015, Salı


İOS için güncelleme 9:

Eğer iOS 9 (Güncellemelerinden 7 b1) hedefleme iseniz, varargs kullanmayan UIApperance protokolde yeni bir yöntem var:

static func appearanceWhenContainedInInstancesOfClasses(containerTypes: [AnyObject.Type]) -> Self

Yani: gibi kullanılabilir

UITextField.appearanceWhenContainedInInstancesOfClasses([MyViewController.self]).keyboardAppearance = .Light

Eğer hala iOS 8 veya daha önceki destek gerekiyorsa, bu soruya aşağıdaki cevabı orijinal kullanın.

8 ve 7 iOS:

Bu yöntem N-C varargs yöntemleri Swift (http://www.openradar.me/17302764) ile uyumlu olmaması nedeniyle Swift için kullanılamaz.

Hızlı çalışan olmayan variadic geçici bir çözüm (UIView soyundan olmayan UIBarItem, aynı yöntemi tekrarladım) yazdı:

// UIAppearance Swift.h
@interface UIView (UIViewAppearance_Swift)
// appearanceWhenContainedIn: is not available in Swift. This fixes that.
  (instancetype)my_appearanceWhenContainedIn:(Class<UIAppearanceContainer>)containerClass;
@end

// UIAppearance Swift.m
@implementation UIView (UIViewAppearance_Swift)
  (instancetype)my_appearanceWhenContainedIn:(Class<UIAppearanceContainer>)containerClass {
    return [self appearanceWhenContainedIn:containerClass, nil];
}
@end

Emin sizin köprü Başlığı #import "UIAppearance Swift.h".

Sonra, Hızlı arama için (örneğin):

UITextField.my_appearanceWhenContainedIn(MyViewController.self).keyboardAppearance = .Light

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • RocketJump

    RocketJump

    22 ŞUBAT 2006
  • RomanAtwood

    RomanAtwood

    18 Kasım 2009
  • tinycammonitor

    tinycammonit

    14 Aralık 2010