使用views.addSubviews

时间:2017-08-23 18:35:05

标签: ios swift3 uiview

我遇到了iPad上的观点的基本问题。我有一个viewController。该视图使用带有全屏图像的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)

}

1 个答案:

答案 0 :(得分:0)

您无法在UIImageView中添加子视图(在您的情况下为标签)。因此,将标签作为子视图添加到图像视图的超级视图中。

override func viewDidLoad() {
    cFrame[0] = CGRect(x:50,y:130,width:151,height:68)
    cFrame[1] = CGRect(x:114,y:276,width:122,height:24)
    showView(frame: cFrame[0]!)
    showView(frame: cFrame[1]!)
}

func showView(frame:CGRect) {
        let label = UILabel(frame: frame)
        label.backgroundColor = .green
        label.numberOfLines = 0
        label.lineBreakMode = .byWordWrapping
        label.textAlignment = .center
        label.text = "Syed Tariq"
        self.view.addSubview(label)

}