Today小部件中的自定义视图彼此堆叠,而不是彼此堆叠

问题描述 投票:0回答:1

我遇到一个我不知道的问题。我需要构建一个小部件,并且有两个自定义视图(现在使用相同的自定义视图)

问题是,由于某种原因,它们彼此堆叠(我可以看到在第一个打印中我在子视图上,而在第二个打印中我有两个,并且仅看到包含子视图顶部的第二个子视图约束)

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded

    guard let currentView = Bundle.main.loadNibNamed("CurrentView", owner: self, options: nil)?.first as? CurrentView else { return  }

    currentView.frame = self.view.frame
    self.view.addSubview(currentView)

    currentView.forcastImage.image = #imageLiteral(resourceName: "13")

    currentView.translatesAutoresizingMaskIntoConstraints = false
    currentView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
    currentView.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
    currentView.heightAnchor.constraint(equalToConstant: 110).isActive = true

    print(self.view.subviews.count)

    if let hourlyView = Bundle.main.loadNibNamed("CurrentView", owner: self, options: nil)?.first as? CurrentView {
        hourlyView.frame = self.view.frame
        self.view.addSubview(hourlyView)

        hourlyView.forcastImage.image = #imageLiteral(resourceName: "6")

        hourlyView.translatesAutoresizingMaskIntoConstraints = false
        hourlyView.topAnchor.constraint(equalTo: currentView.bottomAnchor, constant: 150).isActive = true
        hourlyView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
        hourlyView.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true
        hourlyView.heightAnchor.constraint(equalToConstant: 110).isActive = true
    }

    print(self.view.subviews.count)
}

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
    if activeDisplayMode == .expanded {

        preferredContentSize = CGSize(width: 0, height: 250)
    } else {
        preferredContentSize = maxSize
    }
}

知道为什么吗?

ios swift ios-extensions
1个回答
0
投票

您可能需要

currentView.topAnchor.constraint(equalTo: view.bottomAnchor, constant: 10).isActive = true
© www.soinside.com 2019 - 2024. All rights reserved.