問題
UIViewの枠線の色が変わらなくなった
Storyboardの User Defined Runtime Attributes
でUIViewに枠線や、角丸、枠線の色を編集していたが、Swift4にあげてから枠線の色だけうまく反映されなくなった。
該当のStoryboardを見ると画像の通り。 layer.borderUIColor
が反映されていない模様。
このプロパティは自分で以下のように実装していた。
import Foundation
extension CALayer {
var borderUIColor: UIColor {
get {
return UIColor(cgColor: self.borderColor!)
} set {
self.borderColor = newValue.cgColor
}
}
}
これがSwift4から動かなくなっていた。Swift4になってからObjective-Cとの互換性が変わって User Defined Runtime Attributes
が書き方によってはうまく読み込まれていなかったみたい。
解決方法
@objc dynamic
をつけてあげる。
import Foundation
extension CALayer {
@objc dynamic var borderUIColor: UIColor {
get {
return UIColor(cgColor: self.borderColor!)
} set {
self.borderColor = newValue.cgColor
}
}
}
とすればちゃんと動く。