Встроенный ViewController внутри UIView неправильно отображает свое содержимое - PullRequest
0 голосов
/ 17 июня 2020

У меня есть контроллер представления, в котором в методе didselect я перехожу к другому контроллеру представления, где у меня есть представление, в котором отображается контроллер представления. Он работает, но не отображается должным образом.

В контроллере представления индикатора в представлении didload я написал функцию, которая встраивает контроллер представления внутри представления. Теперь chartview.indicatorcontroller () поступает из фреймворка, который я установил в своем приложении. Пожалуйста, помогите мне с этой проблемой.

Функция встраивания:

func embed(_ viewController: UIViewController, inView holdingView: UIView) {
        //viewController.willMove(toParent: self)
        viewController.view.autoresizingMask = [.flexibleHeight, .flexibleWidth]
        viewController.view.frame = holdingView.bounds
        self.addChild(viewController)
        holdingView.addSubview(viewController.view)
        viewController.didMove(toParent: self)
    }

хочу отображать, как на изображении ниже: скриншот 1

и я получаю этот результат: скриншот

Файл GraphicalToolsViewController:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
         if tableView == graphicalTableView
         {
            let obj = toolsArray[indexPath.row]

            if obj == "Indicators"
            {
                guard let popupVC = self.storyboard?.instantiateViewController(withIdentifier: "IndicatorViewDataController") as? IndicatorViewDataController else { return }
                popupVC.height = UIScreen.main.bounds.height // set height of popup
                popupVC.topCornerRadius = self.topCornerRadius // corner radius of popup
                popupVC.presentDuration = self.presentDuration // show duration of popup
                popupVC.dismissDuration = self.dismissDuration // dismiss duration of popup
                popupVC.popupDelegate = self as? BottomPopupDelegate

                popupVC.modalPresentationStyle = .overCurrentContext
                self.present(popupVC, animated: true, completion: nil)

            }

         }

      }

Файл IndicatorViewController:

var height: CGFloat?
    var topCornerRadius: CGFloat?
    var presentDuration: Double?
    var dismissDuration: Double?
    var shouldDismissInteractivelty: Bool?

    @IBOutlet weak var chartView: TradingChartDesignerView!
    @IBOutlet weak var indicatorView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.embed(chartView.indicatorsController(), inView: chartView)
    }

    // Oriantation to landscape
    override func viewWillAppear(_ animated: Bool) {
        AppDelegate.AppUtility.lockOrientation(UIInterfaceOrientationMask.landscapeRight, andRotateTo: UIInterfaceOrientation.landscapeRight)
    }

    @IBAction func closeIndicatorView(_ sender: UIButton)
    {
        dismiss(animated: true)
    }

    // You can override the desired variable to change appearance

        override var popupHeight: CGFloat { return height ?? CGFloat(UIScreen.main.bounds.height) }

        override var popupTopCornerRadius: CGFloat { return topCornerRadius ?? CGFloat(10) }

        override var popupPresentDuration: Double { return presentDuration ?? 1.0 }

        override var popupDismissDuration: Double { return dismissDuration ?? 1.0 }

    //    override var popupShouldDismissInteractivelty: Bool { return shouldDismissInteractivelty ?? true }

        override var popupDimmingViewAlpha: CGFloat { return 0.5 }
...