首页 > 解决方案 > 需要使用 swift 根据某些条件以编程方式在 UIView 上添加标签

问题描述

我正在开发一个画布视图,我试图在满足某些条件的情况下将图像添加到 UIView 并将文本添加到 UIView。

问题是,在满足所需条件后,我无法向 UIView 添加标签。我在没有任何功能和条件的情况下单独尝试了这段代码,它工作正常。但是,如果我尝试按照下面给出的方式运行它,它不会在 UIView 上显示标签。[注意-这里的代码适用于 imageView。]

我尝试了各种约束组合,例如 centerX、centerY、宽度、高度或前导、尾随、顶部、底部。但没有任何工作。请帮忙。

我的代码如下: -

class CanvasViewController: UIViewController {
  override func viewDidLoad() {
        super.viewDidLoad()
        createCanvasOnAspectRatio()
    }

func createCanvasOnAspectRatio() {
        let View1: UIView = {
            let viewView = UIView()
            viewView.translatesAutoresizingMaskIntoConstraints = false
            viewView.contentMode = .scaleAspectFit
            print(UserDefaults.standard.bool(forKey: "backgroundColourSelected"))
            if UserDefaults.standard.bool(forKey: "backgroundColourSelected") {
                viewView.backgroundColor = self.viewColor
            }else {
                viewView.backgroundColor = .white
            }
            viewView.clipsToBounds = true
            return viewView
        }()
        self.canvasView.addSubview(View1)
        
        View1.centerXAnchor.constraint(equalTo: canvasView.centerXAnchor, constant: 0).isActive = true
        View1.centerYAnchor.constraint(equalTo: canvasView.centerYAnchor, constant: 0).isActive = true
        View1.widthAnchor.constraint(equalTo: canvasView.widthAnchor, constant: 0).isActive = true
        View1.heightAnchor.constraint(equalTo: canvasView.widthAnchor, multiplier: aspectRatio).isActive = true
        
        if UserDefaults.standard.bool(forKey: "imageSelectedFromGallexy") == true {
            for item in 0..<self.imagesForGallery.count {
                let image = imagesForGallery[item]
                let image_View: UIImageView = {
                    let imageV = UIImageView()
                    imageV.image = image
                    imageV.contentMode = .scaleAspectFill
                    imageV.translatesAutoresizingMaskIntoConstraints = false
                    imageV.clipsToBounds = true
                    return imageV
                }()
                
                View1.addSubview(image_View)
                image_View.topAnchor.constraint(equalTo: View1.topAnchor, constant: 0).isActive = true
                image_View.bottomAnchor.constraint(equalTo: View1.bottomAnchor, constant: 0).isActive = true
                image_View.leadingAnchor.constraint(equalTo: View1.leadingAnchor, constant: 0).isActive = true
                image_View.trailingAnchor.constraint(equalTo: View1.trailingAnchor, constant: 0).isActive = true
            }
        }
        
        if UserDefaults.standard.bool(forKey: "addTextToCanvas") == true {
            
            let labelTextView: UILabel = {
                let labelView = UILabel()
                //labelView.frame = CGRect(x: 0.0, y: 0.0, width: 50.0, height: 30.0)
                labelView.translatesAutoresizingMaskIntoConstraints = false
                labelView.textColor = .green
                labelView.text = "Hello"
                labelView.font = UIFont(name: "Avenir-Medium", size: 15.0)
                labelView.textAlignment = .center
                // labelView.clipsToBounds = true
                return labelView
            }()
            
            View1.addSubview(labelTextView)
            
            labelTextView.centerXAnchor.constraint(equalTo: View1.centerXAnchor, constant: 0).isActive = true
            labelTextView.centerYAnchor.constraint(equalTo: View1.centerYAnchor, constant: 0).isActive = true
            labelTextView.widthAnchor.constraint(equalTo: View1.widthAnchor, constant: 0).isActive = true
            labelTextView.heightAnchor.constraint(equalTo: View1.widthAnchor, multiplier: 1.0).isActive = true
            
            UserDefaults.standard.set(false, forKey: "addTextToCanvas")
        }
    }
}

标签: iosswiftuiviewconstraintsuilabel

解决方案


推荐阅读