2017-10-11 3 views
-1

私はすべてのクーポン(UIImage)を表示するのに苦労しています。たとえば、私は3つのクーポンを持っています。私のコードを実行すると、3つ目のクーポンの画像だけが表示されます。どのように最初の2を表示していないのですか?前もって感謝します。複数のUIImageViewをプログラム的に追加するにはどうすればよいですか?

override func viewDidLoad() { 
    var i: Int = 0 
    super.viewDidLoad() 
    self.view.backgroundColor = UIColor.white 

    CouponsViewController.PopulateDataCoupons() 

    i=0 
    repeat { 
      let imageName = MyCoupons.siteCoupons[i]//"Coupons1.jpg" 
      let image = UIImage(named: imageName!) 
      let imageView = UIImageView(image: image!) 
      imageView.frame = CGRect(x: 50, y: 50, width: 350, height: 300) 
      view.addSubview(imageView) 
      i += 1 } 
    while (i < MyCoupons.count-1) 
} 
+1

これは、それらを3つ目のもの(最後に追加されたもの)のみが表示される理由で、それらをすべて互いに重ねて(フレームを見て)置くからです。あなたがしなければならないことは、3つの画像を画面に表示し、それに応じて前進することを正確に再現することです。 – TNguyen

+0

私はいくつか手がかりを与えてくれますか?私は彼らに相談してみましょう。これはどうすればいいですか? 2番目のフレームに新しいフレームを設定するという意味ですか? –

+0

編集:私はあなたがUIの面で達成しようとしているものを正確に知っていないので、ループ中に各画像のフレームのxとyを変更する以外の何かを手がかりにすることはできません – TNguyen

答えて

0

それぞれUIImageViewオブジェクトを同じ場所に配置しています。この行を見てください:

imageView.frame = CGRect(x: 50, y: 50, width: 350, height: 300) 

xまたはyこのように、画像の各1を参照する各反復上の座標を変更してみてください:

let height = 350 
i = 0 
repeat { 
     let imageName = MyCoupons.siteCoupons[i]//"Coupons1.jpg" 
     let image = UIImage(named: imageName!) 
     let imageView = UIImageView(image: image!) 
     imageView.frame = CGRect(x: 50, y: i * height, width: 350, height: height) 
     view.addSubview(imageView) 
     i += 1 
} 
while (i < MyCoupons.count - 1) 

更新:

として@ Mick MacCallumは指摘する。 UIImageViewの高さを考慮に入れてください。上記の変更を参照してください。

+1

イメージビューはこのようにオーバーラップします。更新された原点は、画像ビューのサイズを考慮する必要があります。 –

+0

スクロールはどうですか?私はスクロールビューを追加することで示唆されたことはしましたが、うまくいかなかったのです。私は既にページネーションを有効にしました。 –

関連する問題