首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在IOS工程的viewController中给flutterViewController添加边距/填充

如何在IOS工程的viewController中给flutterViewController添加边距/填充
EN

Stack Overflow用户
提问于 2019-09-23 18:21:03
回答 1查看 300关注 0票数 1

我在一个现有的安卓和IOS项目中添加了flutter,它做得很完美,但是如何在IOS项目的viewController中的flutterView中添加顶部填充/边距以使顶部导航栏出现,因为flutterView覆盖了顶部导航栏,下面是快速视图控制器代码:

代码语言:javascript
复制
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")

   }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-23 18:54:22

我希望这能帮到你

代码语言:javascript
复制
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上的扩展。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58060277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档