मैंने अपने व्यू कंट्रोलर में एक व्यू बनाया है जिसमें UISegmentControl और एक UIScrollView है।

let segmentControl : UISegmentedControl = {
    let segmentItems = ["Personal","Statistics","Calendar"]
    let segmentControl = UISegmentedControl(items: segmentItems)
    segmentControl.selectedSegmentIndex = 0
    segmentControl.addTarget(self, action: #selector(selectIn(sender:)), for: .valueChanged)
    segmentControl.translatesAutoresizingMaskIntoConstraints = false
    return segmentControl
}()

let subView : UIScrollView = {
    let view = UIScrollView()
    view.backgroundColor = .red
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
}()

ViewDidLoad में मैंने जोड़ा

override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationController?.navigationBar.isHidden = true

    view.addSubview(segmentControl)
    view.addSubview(subView)
    setLayout()
}

और इस प्रकार जोड़ा गया लेआउट

func setLayout(){
    NSLayoutConstraint.activate([
        segmentControl.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 10),
        segmentControl.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 20),
        segmentControl.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -20),
        segmentControl.heightAnchor.constraint(equalToConstant: 30),

        subView.topAnchor.constraint(equalTo: segmentControl.bottomAnchor, constant: 10),
        subView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 20),
        subView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -20),
        subView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
    ])
}

और PersonalView (UIView) को जोड़ने का प्रयास किया जब कोई खंड नियंत्रण दबाया जाता है

@objc func selectIn(sender: UISegmentedControl){
        subView.addSubview(pvc)
}

मेरा व्यक्तिगत दृश्य इस प्रकार है

class PersonalView: UIView, UICollectionViewDelegate, UICollectionViewDataSource, UITableViewDelegate, UITableViewDataSource {

let tempValueForTable : Int = 10

let todayLabel : UILabel = {
    let label = UILabel()
    label.text = "Today"
    label.font = .montserratSemiBold
    label.textAlignment = .center
    label.backgroundColor = .green
    label.translatesAutoresizingMaskIntoConstraints = false
    return label
}()

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

    addSubview(todayLabel)
    setLayout()

}

private func setLayout(){
    NSLayoutConstraint.activate([
        todayLabel.topAnchor.constraint(equalTo: self.topAnchor),
        todayLabel.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 20),
        todayLabel.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -20),
        todayLabel.heightAnchor.constraint(equalToConstant: 25),
    ])
}

required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}}

फिर भी मैं देखने में सक्षम नहीं हूं और आगे के अपडेट में मुझे उसी स्क्रॉलव्यू में और दृश्य जोड़ने की आवश्यकता है

0
Mrinal Maheshwari 31 मार्च 2020, 16:23

1 उत्तर

सबसे बढ़िया उत्तर

1.जब आप ऑटो लेआउट बाधाओं का उपयोग कर रहे हैं तो आपको इसे जोड़ने के बाद गलत सेट करना होगा।

SomeView.translatesAutoresizingMaskIntoConstraints = false

2. अपना सबव्यू जोड़ने के बाद आपको इसकी बाधाओं को सेट करना होगा और view.layoutIfNeeded() पर कॉल करना होगा।

subView.addSubview(pvc)
pvc.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
     pvc.trailingAnchor.constraint(equalTo: subView.trailingAnchor),
     pvc.leadingAnchor.constraint(equalTo: subView.leadingAnchor),
     pvc.topAnchor.constraint(equalTo: subView.topAnchor),
     pvc.bottomAnchor.constraint(equalTo: subView.bottomAnchor),
])
view.layoutIfNeeded()
0
Dilan 31 मार्च 2020, 14:17