2017-08-23 6 views
0

iPadのビューで基本的な問題が発生しています。私はviewControllerを持っています。ビューは、フルスクリーンイメージを背景イメージとして使用するUIImageViewを使用しています。私は上にラベルを重ねようとしています。ラベルを個別に設定すると、両方のビューが表示されます。同じ情報を持つ関数を呼び出すと、1つのビューしか表示されません。私はそれを多くのラベルを拡張する必要があります。以下はコードですviews.addSubviewsを使用してビュー内のすべてのビューが表示されない

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) 

} 
+0

フレームの使用を停止し、制約を使用するのをやめてください。 – Randomguy

+0

おそらく2つのラベルを追加しましたが、それらは同じフレームを持っていますか? – HMHero

+1

Pls、問題が発生している元のコードを表示 –

答えて

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) 

} 
+0

違いはありませんが、間違いなく正しいことです。 –

+0

上記のコードを編集しました。これは問題なく動作しています。ラベルの配列を宣言する必要はなく、ウィンドウ外に出ていたのでCGRectフレームを変更しました。 –

+0

ラベル配列を定義する場合は、最初はnilで初期化します。 showViewメソッドから、ラベルインスタンスを返し、ラベル配列に追加します。 –

関連する問題