32

我在没有等待更新 pod 的情况下将我的项目更新到 Swift 4.2 时犯了一个错误。我已经慢慢更新了我的所有代码,但有一行我似乎无法弄清楚。

var animationRect = UIEdgeInsetsInsetRect(frame, UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding))

我收到的错误是,

UIEdgeInsetsInsetRect' 已被实例方法 'CGRect.inset(by:)

对此的任何帮助将不胜感激!

4

4 回答 4

66

错误是非常不言自明的。你可以像这样使用它:

var animationRect = frame.inset(by: UIEdgeInsets(top: padding, left: padding, bottom: padding, right: padding))

或者干脆

var animationRect = frame.insetBy(dx: padding, dy: padding)
于 2018-07-31T14:47:08.250 回答
24

斯威夫特 4.2 和 Xcode 10

之前是这样的——

let bounds = UIEdgeInsetsEqualToEdgeInsets(view.bounds,view.safeAreaInsets)

现在对于 swift 4.2 -

let bounds = view.bounds.inset(by: view.safeAreaInsets)
于 2018-12-04T09:27:58.020 回答
2

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)
    }
于 2018-12-18T13:01:22.613 回答
-2

也可以通过设置SWIFT_VERSION特定的 pod 来解决 pod 的此类问题。

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
于 2019-06-26T18:26:33.527 回答