ios - 需要使用 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")
}
}
}
解决方案
推荐阅读
- visual-studio-code - 相当于 Sublime Text 的 FileSync 扩展的可视代码?
- java - 将项目从一个表重新插入到另一个表的 SQL 逻辑?例如,活动记录变为非活动记录
- html - 带有 2 列的 Bootstrap 4 表单(动态)
- bash - 执行docker exec时如何注入别名?
- c# - 如何创建可以包含任何可用内容的类型列表?
- google-app-maker - 删除表格行中的数据?
- r - 如何遍历列,检查任何列中是否存在特定值,改变新列并输入 1 如果存在,如果不存在则输入 0?
- jquery - 使用 blueimp 从cropperjs 上传文件
- azure-sql-database - 一次运行单个 SQL 构建管道
- android - 出了什么问题:任务“:darnipora:checkDebugDuplicateClasses”执行失败。> 工人提出了 1 个例外: