iOS11의 ColorSet을 사용하고 싶어서 UIColor에 extension을 추가해 봤습니다.
xcassets는 다음과 같습니다.
UIColor에 함수 추가(iOS10 아래 색상 정의)
extension UIColor {
///
/// UIColor.init(named: String)がiOS11以降からしか使えないのでiOS10用処理
///
static func Init(named: String) -> UIColor {
if #available(iOS 11.0, *) {
guard let _0_c: UIColor = UIColor.init(named: named) else {
return UIColor.clear
}
return _0_c
} else {
switch named {
case "Accent": return #colorLiteral(red: 0.3490196078, green: 0.2431372549, blue: 0.9764705882, alpha: 1)
case "Base": return #colorLiteral(red: 0.01176470588, green: 0.662745098, blue: 0.9568627451, alpha: 1)
case "BaseD1": return #colorLiteral(red: 0.003921568627, green: 0.3411764706, blue: 0.6078431373, alpha: 1)
case "BaseD1A080": return #colorLiteral(red: 0.003921568627, green: 0.3411764706, blue: 0.6078431373, alpha: 0.8)
case "BaseD2": return #colorLiteral(red: 0.007843137719, green: 0.5333333611, blue: 0.8196078539, alpha: 1)
case "BaseL1": return #colorLiteral(red: 0.8823529412, green: 0.9607843137, blue: 0.9960784314, alpha: 1)
case "BaseL2": return #colorLiteral(red: 0.5058823529, green: 0.831372549, blue: 0.9803921569, alpha: 1)
case "Overlay": return #colorLiteral(red: 0, green: 0, blue: 0, alpha: 0.5)
case "FontD1": return #colorLiteral(red: 0.2588235294, green: 0.2588235294, blue: 0.2588235294, alpha: 1)
case "FontD2": return #colorLiteral(red: 0.4588235319, green: 0.4588235319, blue: 0.4588235319, alpha: 1)
case "FontL1": return #colorLiteral(red: 0.9333333373, green: 0.9333333373, blue: 0.9333333373, alpha: 1)
case "FontL2": return #colorLiteral(red: 0.741176486, green: 0.741176486, blue: 0.741176486, alpha: 1)
default: return UIColor.clear
}
}
}
}
사용시Storyboard
코드
UIColor.Init(named: "FontD1")
iOS10이 지원되지 않을 때 다음 대량 교체와 extension의 Init 함수를 삭제합니다UIColor.Init(named:
UIColor.init(named:
아직 iOS10을 지원 대상에서 제외할 수 없기 때문에 잠시 이런 느낌으로 설치합니다.스토리보드로 정의할 수 있어서 정말 큰 도움이 됐어요.
xcassets의 색깔이 바뀌면 스토리보드와 코드에 기재된 부분도 바뀌어서 기쁩니다.
※ iOS10을 지원하는 경우에도 extension의 Init의 iOS10 정의를 수정해야 합니다...
추기@20170808
구축은 통과했지만 ColorSet을 지정한 Storyboard는 붕괴를 일으킬 것 같습니다.
iOS11 전에는 사용하지 않는 게 좋을 것 같은데...
m( _ _ )m
이용하려면 이 근처의 대응이 필요해요...
http://blog.kishikawakatsumi.com/entry/2015/08/17/085902
UIColor와 같은 느낌으로 UIStoryboard에서도 처리가 추가되었습니다.
안전 동작 확인 완료!
///
// MARK: ------------------------------ extension UIStoryboard
///
/// extension UIStoryboard
///
extension UIStoryboard {
///
// MARK: ------------------------------ static method
///
/// UIColor.init(named: String)がiOS11以降からしか使えないのでiOS10用処理
///
static func IOS10(name: String, bundle: Bundle?) -> UIStoryboard {
if #available(iOS 11.0, *) {
return UIStoryboard(name: name, bundle: bundle)
} else {
return UIStoryboard(name: "\(name)iOS10", bundle: bundle)
}
}
}
호출자let sb: UIStoryboard = UIStoryboard.IOS10(name: "StoryboardName", bundle: nil)
Reference
이 문제에 관하여(iOS11의 ColorSet을 사용하고 싶어서 UIColor에 extension을 추가해 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MTattin/items/c4031fb6c2799baf005c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)