ポッドの更新を待たずに、プロジェクトをSwift 4.2に更新するというミスを犯しました。私はゆっくりとすべてのコードを更新しましたが、理解できないように見える行が1つあります。
var animationRect = UIEdgeInsetsInsetRect(frame, UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding))
私が受け取るエラーは、
UIEdgeInsetsInsetRect 'は、インスタンスメソッド' CGRect.inset(by :)に置き換えられました
これに関する助けは大歓迎です!
エラーは自明です。次のように使用できます。
var animationRect = frame.inset(by: UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding))
または単に
var animationRect = frame.insetBy(dx: padding, dy: padding)
Swift 4.2およびXcode 1
以前はこんな感じでした-
let bounds = UIEdgeInsetsEqualToEdgeInsets(view.bounds,view.safeAreaInsets)
Swift 4.2の場合-
let bounds = view.bounds.inset(by: view.safeAreaInsets)
Swift 4.2のUIEdgeInsets
以前のバージョン
let padding = UIEdgeInsets(top: 0, left: 40, bottom: 0, right: 5) override func textRect(forBounds bounds: CGRect) -> CGRect { return UIEdgeInsetsInsetRect(bounds, padding) }
to Swift 4.2 and Xcode 10
let padding = UIEdgeInsets(top: 0, left: 40, bottom: 0, right: 5) override func textRect(forBounds bounds: CGRect) -> CGRect { return rect.inset(by: GlobalClass.language == "ar" ? paddingR : padding) }
ポッドに関するこの種の問題は、特定のポッドにSwift_VERSION
を設定することでも解決できます。
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['MessageKit'].include? target.name
target.build_configurations.each do |config|
config.build_settings['Swift_VERSION'] = '5.0'
end
end
end
end