首页 > 解决方案 > 动态添加和删除视图 iOS Swift

问题描述

在此处输入图像描述

if count != 0 {
    for i in stride(from: 0, to: Int(count!), by: 1) {
        if i==0 {
            let commodity = storeDetails?.storeSearchPickup.storeMaterialsDetails[i]
            let balesPicked: Int = (commodity?.balesPicked)!
            let balesRemaining: Int = (commodity?.balesRemaining)!
            commoditySection.balepickupedlabeltext.text = String(balesPicked)
            commoditySection.balesremaininglabeltext.text = String(balesRemaining)
            commoditySection.commodityLabel.font = UIFont.boldSystemFont(ofSize: 16.0)
            commoditySection.commodityLabel.text = commodity?.materialShortName
            commoditySection.setCommodity(details: commodity!, index: Int((commodity?.materialId)!))
            commoditySection.callback = self
            commoditiesViewCount = commoditiesViewCount+1
            print("commoditiesViewCount\(commoditiesViewCount)")
            self.currentSelectedCommodity = commodity
        } else {
            let commodity = storeDetails?.storeSearchPickup.storeMaterialsDetails[i]
            var commodityView = CommoditySection(frame:CGRect(x: 0, y: 0, width: commoditycontainer.frame.width, height:   CGFloat.leastNonzeroMagnitude));
            self.commoditycontainer.addSubview(commodityView)
            commodityView.setCommodity(details: commodity!, index: Int((commodity?.materialId)!))
            commodityView.translatesAutoresizingMaskIntoConstraints = false
            commodityView.callback = self

            if(currentCommodityView != nil) {
                let verticalConstraint = NSLayoutConstraint(item: commodityView, attribute: NSLayoutConstraint.Attribute.top, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self.currentCommodityView, attribute: NSLayoutConstraint.Attribute.bottom, multiplier: 1, constant: 0)
                let leading = NSLayoutConstraint(item: commodityView, attribute: NSLayoutConstraint.Attribute.leading, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self.currentCommodityView, attribute: NSLayoutConstraint.Attribute.leading, multiplier: 1, constant: 0)
                let trailing = NSLayoutConstraint(item: commodityView, attribute: NSLayoutConstraint.Attribute.trailing, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self.currentCommodityView, attribute: NSLayoutConstraint.Attribute.trailing, multiplier: 1, constant: 0)
                NSLayoutConstraint.activate([verticalConstraint,leading,trailing])
                commodityheightconstraint.constant = commodityheightconstraint.constant + commodityView.frame.height
                print("commoditiesViewCount\(commoditiesViewCount)")

            } else {
                let verticalConstraint = NSLayoutConstraint(item: commodityView, attribute: NSLayoutConstraint.Attribute.top, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self.commoditySection, attribute: NSLayoutConstraint.Attribute.bottom, multiplier: 1, constant: 0)
                let leading = NSLayoutConstraint(item: commodityView, attribute: NSLayoutConstraint.Attribute.leading, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self.commoditySection, attribute: NSLayoutConstraint.Attribute.leading, multiplier: 1, constant: 0)
                let trailing = NSLayoutConstraint(item: commodityView, attribute: NSLayoutConstraint.Attribute.trailing, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self.commoditySection, attribute: NSLayoutConstraint.Attribute.trailing, multiplier: 1, constant: 0)
                NSLayoutConstraint.activate([verticalConstraint,leading,trailing])
                commodityheightconstraint.constant =  commodityheightconstraint.constant + commodityView.frame.height

                print("commoditiesViewCount\(commoditiesViewCount)")

            }
            commodityView.commodityLabel.font = UIFont.boldSystemFont(ofSize: 16.0)
            commodityView.commodityLabel.text = commodity?.materialShortName
            let balesPicked: Int = (commodity?.balesPicked)!
            let balesRemaining: Int = (commodity?.balesRemaining)!
            commodityView.balepickupedlabeltext.text = String(balesPicked)
            commodityView.balesremaininglabeltext.text = String(balesRemaining)
            self.currentCommodityView = commodityView;
            commoditiesViewCount = commoditiesViewCount+1
            print("commoditiesViewCount\(commoditiesViewCount)")

            isSecondViewAdded = true
        }
    }
}

我是 iOS 开发的新手,但经验丰富的 Android 开发人员我有一个容器,当我添加第一个视图时它需要添加和删除视图,它正确地适合容器,当实用地在第一个视图下方添加另一个视图时,它会覆盖容器下方的另一个视图两个视图的高度都CGFloat.leastNonzeroMagnitude 需要根据包含的视图设置动态的高度

标签: iosswiftios-autolayout

解决方案


推荐阅读