2016-09-01 6 views
0

私は一般的にプログラミングを初めて学んでいます。複雑なレイアウトで多数のボタンを作成する方法を理解しようとしています。私のレイアウトは、基本的に約24セクションにカットされたボディの透明PNGであり、私はボディの各セグメントを別々のボタンにしたい。複雑な画像ベースのボタンレイアウト

私はビューコントローラでいくつかのレイアウトを試しました。大量のボタンを画像に重ねるように設定すると(シミュレータで起動したときにレイアウトをそのままにすることはできませんでした)、ボタン画像を表示しようとしましたが、大きな画像サイズのボタンを試しましたが、一番上のボタン。

これを行う方法はありますか、それとも実行可能にするコードが必要ですか?

答えて

0

UICollectionViewControllerまたはUICollectionViewの方が適しています。 UICollectionViewの背景イメージを設定して、セルをボタンと見なすことができます。

ここは簡単な例です。

import UIKit 

class Collection: UICollectionViewController { 

    private let cellId = "cell" 

    override init(collectionViewLayout layout: UICollectionViewLayout) { 
     if let l = layout as? UICollectionViewFlowLayout{ 
      l.minimumInteritemSpacing = 0 
      l.sectionInset = UIEdgeInsetsZero 
      l.scrollDirection = .Vertical 
      l.footerReferenceSize = CGSize.zero 
      l.headerReferenceSize = CGSize.zero 
      let screenWidth = UIScreen.mainScreen().bounds.width 
      let itemWidth = CGFloat(Int(screenWidth/4)) 
      l.itemSize = CGSize(width: itemWidth, height: itemWidth) 
     } 
     super.init(collectionViewLayout: layout) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     view.backgroundColor = UIColor.whiteColor() 
     collectionView?.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: cellId) 

    } 

} 

extension Collection{ 

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
     return 4 
    } 

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 4 
    } 

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellId, forIndexPath: indexPath) 
     cell.backgroundColor = UIColor.redColor() 
     return cell 
    } 

} 

セルにタッチアクションを追加する場合。

+0

私はこのコードを理解しようとしています。イメージを取り、それを4象限に分割していると言いますか? – cortlandune

+0

申し訳ありませんが、入力を終える前に間違って送信しました...私の状況でこのコードがどのように役立つかは不明ですが、非常に不規則な(人体の輪郭を描いた)形があります。それほど正方形ではない。正確な点やベクトル図形をボタンやPNG図形として指定する方法はありますか?あなたが投稿したコードが私の頭の上に行くかもしれない。私はこれを理解することができないと心配している。または、これを使用して画像を80個のブロックに分割し、1つのボタンの一部としてセットを指定するのが最も効率的でしょうか?私は画像を投稿するが、私はできない。 – cortlandune

関連する問題