2016-07-25 11 views
1

Ich habe eine benutzerdefinierte Klasse für UICollectionViewCell namens .Setzen Sie eine UIButton auf die Größe einer UICollectionViewCell

Ich erstelle eine Instanzvariable vom Typ UIButton.

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

    }() 

} 

für diese Instanz variable würde Ich mag ihren Rahmen setzen, um die UICollectionViewCell ‚s Rahmen äquivalent. In einer Klasse, die von UICollectionViewCell erbt, ist dies jedoch nicht möglich. Wie kann ich das machen? Vielen Dank!

+2

Haben Sie sich den Zugriff auf 'self.contentView' angeschaut, um alle Größeninformationen der Zelle zu erhalten? –

Antwort

2

Die Zelle contentView ist die gleiche Größe wie der Zelle, so dass Sie dies den Rahmen zu bekommen verwenden sollten .

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

@Allanah_Douglas wenn ich das schreibe innerhalb meiner ChronicleCell-Klasse bekomme ich den folgenden Fehler 'Instance-Mitglied 'contentView' kann nicht auf Typ 'ChronicleCell'' – Thalatta

+0

Ah, aber ich denke, das ist, weil ich versuche, Klasseneigenschaften innerhalb einer Schließung zugreifen! – Thalatta

2

der Rahmen des collectionViewLayout Weisen auf die Schaltfläche:

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

Ihr Code sein kann:

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

} 
Verwandte Themen