我在一个现有的安卓和IOS项目中添加了flutter,它做得很完美,但是如何在IOS项目的viewController中的flutterView中添加顶部填充/边距以使顶部导航栏出现,因为flutterView覆盖了顶部导航栏,下面是快速视图控制器代码:
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")
}
}发布于 2019-09-23 18:54:22
我希望这能帮到你
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])
}
}在上面的示例中,您将在当前控制器中添加填充,但由于您将其作为子级添加,这将自动成为您的控制器的一部分,我认为它位于当前导航栏下。
也许在你的控制器中创建一个专用的子视图会更好。
此外,我还建议您使用
addChildViewControllerWithPadding和constraintsWithPaddingBetween
作为UIViewController和UIView上的扩展。
https://stackoverflow.com/questions/58060277
复制相似问题