【问题标题】:How to add padding/Marging to ViewController如何向 ViewController 添加填充/边距
【发布时间】:2019-11-20 10:34:37
【问题描述】:

我正在使用SJSegmentedViewController 并在 SegmentController 中加载两个视图控制器,我想为这两个控制器添加 20 px 的填充,但我已经尝试但无法实现,

如果有人知道如何自定义 SJSegmentedViewController,请在此处参考随附的屏幕截图。

    override func viewDidLoad() {
        super.viewDidLoad()
        let headerViewController = storyboard
            .instantiateViewController(withIdentifier: "HeaderViewController1")

        let firstViewController = storyboard
            .instantiateViewController(withIdentifier: "FirstTableViewController")
        firstViewController.title = "First"

        let secondViewController = storyboard
            .instantiateViewController(withIdentifier: "SecondViewController")
        secondViewController.title = "Second"

        let segmentController = SJSegmentedViewController()
        segmentController.headerViewController = headerViewController
        segmentController.segmentControllers = [firstViewController,
                                                secondViewController]
        segmentController.headerViewHeight = 300.0

        navigationController?.pushViewController(segmentController, animated: true)
    }

【问题讨论】:

    标签: ios uiviewcontroller


    【解决方案1】:

    基于SJContentView 的实现,我发现该库没有使用集合视图来实现包含所有视图控制器的分页滚动。它直接使用滚动视图。处理视图控制器布局的两个函数

    1. func addContentView(_ view: UIView, frame: CGRect)

    2. func updateContentControllersFrame(_ frame: CGRect)

    不支持在两个相邻视图控制器的两个视图之间添加填充。

    有两种方法,如果你想继续SJSegmentedViewController

    1. 在视图控制器的视图上添加填充,而不是希望将它们放在滚动视图的视图之间。此处屏幕的可用宽度将减小。

    2. 创建an issue 并寻求帮助。

    【讨论】:

    • 如何处理第一个选项,关于它的任何想法
    【解决方案2】:

    @user1374 你可以试试下面的方法吗?

    【讨论】:

    • 我的 SJSegmentedViewController 两个视图控制器都是以编程方式创建和设计的
    • @user1374 我想策略应该是一样的,你可以将所有子视图嵌入到一个UIView 中,然后添加layout constraints 进行填充,你可以实现相同的效果。请参考截图。