我已經創建了一個使用圓角的Storyboard
的視圖。但是我想刪除這個iPhone
。我正在使用用戶定義的運行時屬性來完成這項工作,我想知道我是否可以對iPhone
進行變更。不同用戶定義的特徵運行屬性
編輯:我知道我可以在代碼中做到這一點,但它聽起來很傻,因爲這件事情的視覺和故事板文件聽起來像是做這個變化的正確的地方。
我已經創建了一個使用圓角的Storyboard
的視圖。但是我想刪除這個iPhone
。我正在使用用戶定義的運行時屬性來完成這項工作,我想知道我是否可以對iPhone
進行變更。不同用戶定義的特徵運行屬性
編輯:我知道我可以在代碼中做到這一點,但它聽起來很傻,因爲這件事情的視覺和故事板文件聽起來像是做這個變化的正確的地方。
我不認爲這是可能的故事板。您可以在加載特定視圖並覆蓋屬性時檢查代碼中的設備類型。
E.g.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if UIDevice.current.model == "iPhone" {
// reset attributes
}
}
extension CALayer {
var borderUIColor: UIColor {
set {
if UIDevice.current.model == "iPhone" {
self.borderColor = newValue.cgColor
}
// do whatever you want
}
get {
return UIColor(cgColor: self.borderColor!)
}
}
}
然後使用layer.borderUIColor訪問屬性。
編寫擴展並重新定義屬性,在set方法中判斷設備類型將解決這個問題!希望這能解決你的問題!
那麼你想只爲某些設備/平臺使用運行時屬性? – rmooney
是的,我想用這些屬性只是爲了某些變化(比如你可以使用約束),使用「Vary for Traits」 –
在XCode的這一點上看起來不太可能。我嘗試手動將變體鍵複製到XCode中的故事板XML中的userDefinedRuntimeAttributes鍵中,並且代碼似乎被忽略,XCode在我重新加載故事板時將其刪除。只是在代碼中這樣做可能更容易。 – rmooney