簡體   English   中英

在 ViewController 的中心添加 UIView | 自動布局

[英]Adding UIView in Centre of ViewController | AutoLayout

所以我創建了一個進度指示器視圖,我在 API 調用中顯示該視圖。 我為它創建了一個自定義 UIView Class。

現在,一切正常。 但是視圖的 position 應該在中心,但不是。

我認為我有正確的限制,但仍然無法正常工作。

這是我的代碼:

import Foundation
import UIKit
import UICircularProgressRing
import HGRippleRadarView


class ProgressIndicator : UIView {

    @IBOutlet weak var contentView : UIView!
    @IBOutlet weak var progressView : UICircularProgressRing!
    @IBOutlet weak var logoContainerView : UIView!
    @IBOutlet weak var rippleView : RippleView!

    static let shared = ProgressIndicator()

    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonInit()
    }

    func commonInit() {
        Bundle.main.loadNibNamed("ProgressIndicator", owner: self, options: nil)
        addSubview(contentView)

    }

    public func show(controller : UIViewController) {
        setupLoadingView(controller : controller)
    }

    public func hide() {
        removeLoadingView()
    }

    private func setupLoadingView(controller : UIViewController) {

        controller.view.addSubview(self)

        // adding contrints on main view
        let leadingConstraint = NSLayoutConstraint(item: self, attribute: NSLayoutConstraint.Attribute.leading, relatedBy: NSLayoutConstraint.Relation.equal, toItem: controller.view, attribute: NSLayoutConstraint.Attribute.leading, multiplier: 1, constant: 0)

        let trailingConstraint = NSLayoutConstraint(item: self, attribute: NSLayoutConstraint.Attribute.trailing, relatedBy: NSLayoutConstraint.Relation.equal, toItem: controller.view, attribute: NSLayoutConstraint.Attribute.trailing, multiplier: 1, constant: 0)

        let topConstraint = NSLayoutConstraint(item: self, attribute: NSLayoutConstraint.Attribute.top, relatedBy: NSLayoutConstraint.Relation.equal, toItem: controller.view, attribute: NSLayoutConstraint.Attribute.top, multiplier: 1, constant: 0)

        let bottomConstraint = NSLayoutConstraint(item: self, attribute: NSLayoutConstraint.Attribute.bottom, relatedBy: NSLayoutConstraint.Relation.equal, toItem: controller.view, attribute: NSLayoutConstraint.Attribute.bottom, multiplier: 1, constant: 0)

        controller.view.addConstraints([leadingConstraint, trailingConstraint, topConstraint, bottomConstraint])

        // adding constraints on content view

        let leadingConstraint1 = NSLayoutConstraint(item: self.contentView!, attribute: NSLayoutConstraint.Attribute.leading, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self, attribute: NSLayoutConstraint.Attribute.leading, multiplier: 1, constant: 0)

        let trailingConstraint1 = NSLayoutConstraint(item: self.contentView!, attribute: NSLayoutConstraint.Attribute.trailing, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self, attribute: NSLayoutConstraint.Attribute.trailing, multiplier: 1, constant: 0)

        let topConstraint1 = NSLayoutConstraint(item: self.contentView!, attribute: NSLayoutConstraint.Attribute.top, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self, attribute: NSLayoutConstraint.Attribute.top, multiplier: 1, constant: 0)

        let bottomConstraint1 = NSLayoutConstraint(item: self.contentView!, attribute: NSLayoutConstraint.Attribute.bottom, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self, attribute: NSLayoutConstraint.Attribute.bottom, multiplier: 1, constant: 0)

        self.addConstraints([leadingConstraint1, trailingConstraint1, topConstraint1, bottomConstraint1])


        self.setNeedsLayout()
        self.reloadInputViews()
        self.layoutIfNeeded()


    }

}

這是 m 得到的結果:

在此處輸入圖像描述

這是xib文件截圖

在此處輸入圖像描述

您已添加約束但未將translatesAutoresizingMaskIntoConstraints設置為false

self.translatesAutoresizingMaskIntoConstraints = false
self.contentView.translatesAutoresizingMaskIntoConstraints = false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM