【发布时间】:2018-02-01 11:30:13
【问题描述】:
我在 iPad 上遇到了一个基本的视图问题。我有一个视图控制器。该视图使用带有全屏图像的 UIImageView 作为背景图像。我正在尝试在顶部覆盖标签。如果我单独设置标签,两个视图都会显示。如果我调用具有相同信息的函数,则只会显示一个视图。我需要扩展它很多标签。代码如下:
class ViewController: UIViewController {
@IBOutlet weak var backGroundImageView: UIImageView!
var cFrame:[CGRect?] = [CGRect?](repeating: nil, count: 13)
var offsets:[CGRect?] = [CGRect?](repeating: nil, count: 13)
var labels: [UILabel?] = [UILabel?](repeating:UILabel(), count:13)
override func viewDidLoad() {
super.viewDidLoad()
cFrame[0] = CGRect(x:450,y:530,width:251,height:68)
cFrame[1] = CGRect(x:147,y:676,width:222,height:24)
loadFrameValues()
var frame = CGRect(x: 450, y: 520, width: 251, height: 68)
let label0 = UILabel(frame: frame)
label0.backgroundColor = .white
label0.numberOfLines = 0
label0.lineBreakMode = .byWordWrapping
label0.textAlignment = .center
label0.text = "Text 1"
frame = CGRect(x: 152, y: 686, width: 210, height: 16)
let label1 = UILabel(frame: frame)
label1.backgroundColor = .cyan
label1.lineBreakMode = .byWordWrapping
label1.textAlignment = .left
label1.text = "Text 2"
label1.font = label1.font.withSize(12)
backGroundImageView.addSubview(label0)
backGroundImageView.addSubview(label1)
// showView(label: labels[0]!, frame: cFrame[0]!)
// showView(label: labels[1]!, frame: cFrame[1]!)
// }
}
func showView(label: UILabel, frame:CGRect) {
label.frame = frame
label.backgroundColor = .white
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
label.textAlignment = .center
label.text = "Syed Tariq"
backGroundImageView.addSubview(label)
}
【问题讨论】:
-
停止使用框架并开始使用约束只是一个建议。
-
您可能添加了两个标签,但它们的框架相同?
-
请显示您遇到问题的原始代码
-
这是上面的代码。您可以在代码中看到框架规格(不是同一个框架),您在代码中看到的内容有效。当我替换函数 showView 时,它只显示第一个视图。另外,尝试添加到视图中。