2016-06-30 22 views
0

ボタンパネルを2つの行に3つ作成しようとしました。それは柔軟である必要はありません考えると、私はiOSがプログラムで中央の画像ビューを追加する

class MyViewController : UIViewController { 
    @IBOutlet weak var buttonPanel: UIView! // auto layout, aligned to the bottom of screen 
    var icon0: UIImageView! 
    var icon1: UIImageView! 
    ... 
    var icon5: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad(); 
     icon0 = UIImageView(image: UIImage(named: "ic_smiley_gray.png")) 
     icon1 = UIImageView(image: UIImage(named: "ic_smiley_gray.png")) 
     // ... 
     icon5 = UIImageView(image: UIImage(named: "ic_smiley_gray.png")) 
     let icons = [icon0, icon1, ..., icon5] 

     let btnCellW = CGFloat(self.view.bounds.width)/3.0 
     let btnCellH = buttonPanel.frame.height/2.0 
     for j in 0..<2 { 
      for i in 0..<3 { 
       let rect = CGRect(x: btnCellW * CGFloat(i), 
           y: btnCellH * CGFloat(j), 
           width: btnCellW, height: btnCellH) 
       let cell = UIView(frame: rect) 
       cell.layer.borderWidth = 0.5 
       cell.layer.borderColor = UIColor.grayColor().CGColor 
       cell.layer.backgroundColor = UIColor(red: 0.85 + 0.15 * CGFloat(1 - i % 2), green: 0.85, blue: 0.85, 
               alpha: 1.0).CGColor 
       buttonPanel.addSubview(cell) 
       let ic = icons[i + j*3] 
       ic.center = cell.center 
       ic.layer.borderWidth = 0.5 
       ic.layer.borderColor = UIColor.brownColor().CGColor 
       NSLog("adding icon \(ic.image) at \(ic.center.x) x \(ic.center.y)") 
       cell.addSubview(ic) 
      } 
     } 

を試してみましたボタンパネルは、細胞と正常に描かれているが、唯一の最初のセルは、イメージを持っているので、画像アセットが良いです。他のセルは空白です。私の問題は何ですか?ビューの中心がそのスーパービューの座標であるため、おそらく正しいことができない

ic.center = cell.center 

enter image description here

答えて

0

問題は、この行です。あなたはリンゴとオレンジを混ぜています。 icの中心を内の内の中心にしたいのではなく、cellと同じ座標に置き換えます。cellの相対座標はbuttonPanelです!従って、最初のものを除くicの全ての画像は、境界の外側にあり、したがって、不可視である。

代わりに、cell境界の中心を把握し、そこicの中心を置く:すなわち、CGPoint(x:cell.bounds.width/2, y:cell.bounds.height/2)で。

+0

あなたは正しいです。私は誤って中心が画面座標にあると思います。 –

関連する問題