如何在IOS项目中将边距/填充添加到FlutterViewController内部的视图控制器



我在现有的Android和IOS项目中添加了颤振,它做得很完美,但是如何在IOS项目中将顶部填充/边距添加到FlutterView内部viewController中,以便出现顶部导航栏,因为颤振视图覆盖了顶部导航栏,这里是快速视图控制器代码:

import UIKit
import Flutter
class FlutterView: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let flutterEngine = (UIApplication.shared.delegate as? AppDelegate)?.flutterEngine;
let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)!;
self.present(flutterViewController, animated: false, completion: nil)
flutterViewController.setInitialRoute("referral")
}
}

我希望这有帮助

class FlutterView: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let flutterEngine = (UIApplication.shared.delegate as? AppDelegate)?.flutterEngine;
let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)!;
//        self.present(flutterViewController, animated: false, completion: nil)
addChild(flutterViewController)

flutterViewController.setInitialRoute("referral")
}

func addChildViewControllerWithPadding(_ childController: UIViewController, padding: CGFloat) {
addChild(childController)
view.addSubview(childController.view)
constraintsWithPaddingBetween(holderView: view, topView: childController.view, padding: padding)
childController.didMove(toParent: self)
}
func constraintsWithPaddingBetween(holderView: UIView, topView: UIView, padding: CGFloat) {
guard holderView.contains(topView) else {
return
}
topView.translatesAutoresizingMaskIntoConstraints = false
let pinTop = NSLayoutConstraint(item: topView, attribute: .top, relatedBy: .equal,
toItem: holderView, attribute: .top, multiplier: 1.0, constant: padding)
let pinBottom = NSLayoutConstraint(item: topView, attribute: .bottom, relatedBy: .equal,
toItem: holderView, attribute: .bottom, multiplier: 1.0, constant: padding)
let pinLeft = NSLayoutConstraint(item: topView, attribute: .left, relatedBy: .equal,
toItem: holderView, attribute: .left, multiplier: 1.0, constant: padding)
let pinRight = NSLayoutConstraint(item: topView, attribute: .right, relatedBy: .equal,
toItem: holderView, attribute: .right, multiplier: 1.0, constant: padding)
holderView.addConstraints([pinTop, pinBottom, pinLeft, pinRight])
}
}

在上面的示例中,您将在当前控制器中填充,但由于您将将其添加为子项,因此它将自动成为控制器的一部分,我想该控制器位于当前导航栏下。

也许在控制器中创建专用子视图会更好。

此外,我建议您拥有

addChildViewControllerWithPaddingconstraintsWithPaddingBetween

作为UIViewControllerUIView的扩展。

最新更新