代码之家  ›  专栏  ›  技术社区  ›  raginggoat

子视图控制器大小问题

  •  1
  • raginggoat  · 技术社区  · 6 年前

    我有一个视图控制器,在导航栏中有一个分段控件,用于切换子视图控制器和父控制器。它工作得很好,但是我小时候的表视图大小不正确。它在底部被切断。

    母VC:

    import UIKit
    
    class ShareTabViewController: UIViewController {
    
        let segementedControl = UISegmentedControl(items: ["Share", "Blog", "Progress"])
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            self.segementedControl.sizeToFit()
            self.segementedControl.tintColor = Constants.Colors.raPurple
            self.segementedControl.selectedSegmentIndex = 0
            self.segementedControl.addTarget(self, action: #selector(selectionChanged(_:)), for: .valueChanged)
            self.navigationItem.titleView = self.segementedControl
    
            let shareVC = ShareTableViewController()
            self.view.addSubview(shareVC.view)
            self.addChild(shareVC)
            shareVC.didMove(toParent: self)
        }
    
        @objc func selectionChanged(_ sender: UISegmentedControl) {
            for subview in self.view.subviews {
                subview.removeFromSuperview()
            }
    
            for childVC in self.children {
                childVC.removeFromParent()
            }
    
            switch sender.selectedSegmentIndex {
            case 0:
                let shareVC = ShareTableViewController()
                self.view.addSubview(shareVC.view)
                self.addChild(shareVC)
            case 1:
                let blogVC = BlogViewController()
                self.view.addSubview(blogVC.view)
                self.addChild(blogVC)
            case 2:
                let progressVC = ProgressViewController()
                 self.view.addSubview(progressVC.view)
                self.addChild(progressVC)
            default:
                print("default")
            }
        }
    }
    

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   Shehata Gamal    6 年前

    您需要为外接程序设置一个框架 selectionChanged &在里面 viewDidLayoutSubviews 对于外接程序 viewDidLoad 因为它有错误的框架,或一般使用

    NSLayoutConstraint.activate([ 
       shareVC.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), 
       shareVC.view.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), 
       shareVC.view.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor), 
       shareVC.view.bottomAnchor.constraint(equalTo:self.view.safeAreaLayoutGuide.bottomAnchor) 
    ])