2016-07-25 9 views
1

私はUICollectionViewCellのカスタムクラスをChronicleCellといいます。UICollectionViewCellのサイズにUIButtonを設定します

私はタイプ変数UIButtonを作成しています。このインスタンス変数については

class ChronicleCell : UICollectionViewCell { 
    //init etc. 
    var buttonFullCellSize : UIButton = { 
     let button = UIButton() 
     //TODO set button to be size of UICollectionViewCell frame 

    }() 

} 

、私はUICollectionViewCellのフレームに相当するとそのフレームを設定したいと思います。ただし、これはUICollectionViewCellから継承するクラスではアクセスできません。これどうやってするの?ありがとうございました!

+2

セルのすべてのサイズ情報を取得するために 'self.contentView'にアクセスしましたか? –

答えて

2

セルのcontentViewあなたがフレームを取得するためにこれを使用する必要がありますので、セルと同じサイズであります。

var buttonFullCellSize: UIButton { 
    let button = UIButton() 
    button.frame = contentView.frame 
    return button 
} 
+0

@Allanah_Douglas私は自分のChronicleCellクラス内に記述すると、次のエラーが発生します。 'インスタンスメンバー' contentView 'をタイプ' ChronicleCell''に使用できません。 – Thalatta

+0

ああ、私はクロージャー内のクラスプロパティにアクセスしようとしているからです! – Thalatta

2

ボタンのにcollectionViewLayoutの枠を割り当てます。

let rect = self.collectionViewLayout.layoutAttributesForItemAtIndexPath(clIndexPath).frame 
button.frame = button.rect 

あなたのコードは次のようになります。

class ChronicleCell : UICollectionViewCell { 
    //init etc. 
    var buttonFullCellSize : UIButton = { 
     let button = UIButton() 
     let frameOfUICollectionViewCell = self.collectionViewLayout.layoutAttributesForItemAtIndexPath(clIndexPath).frame 
     button.frame = button.rect 
     return button 
    }() 

} 
関連する問題