Ich habe bereits verschiedene Beiträge zum Hinzufügen der zweiten Ansicht zum Hinzufügen von Schatten durchgearbeitet, kann sie jedoch immer noch nicht zum Laufen bringen, wenn ich sie hinzufügen möchte UICollectionViewCell
. Ich habe eine Unterklasse erstellt UICollectionViewCell
, und hier ist mein Code, in dem ich der Inhaltsansicht der Zelle verschiedene UI-Elemente hinzufüge und der Ebene Schatten hinzufüge:
[self.contentView setBackgroundColor:[UIColor whiteColor]];
self.layer.masksToBounds = NO;
self.layer.shadowOffset = CGSizeMake(0, 1);
self.layer.shadowRadius = 1.0;
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOpacity = 0.5;
[self.layer setShadowPath:[[UIBezierPath bezierPathWithRect:self.bounds] CGPath]];
Ich würde gerne wissen, wie man abgerundete Ecken und Schatten hinzufügt UICollectionViewCell
.
iphone
ios
uicollectionviewcell
Vincent Yiu
quelle
quelle
Antworten:
Keine dieser Lösungen hat bei mir funktioniert. Wenn Sie alle Ihre Unteransichten in die Inhaltsansicht von UICollectionViewCell einfügen, die Sie wahrscheinlich sind, können Sie den Schatten auf der Ebene der Zelle und den Rand auf der Ebene der Inhaltsansicht festlegen, um beide Ergebnisse zu erzielen.
Swift 3.0
quelle
cell.layer.backgroundColor = [UIColor clearColor].CGColor;
Swift 3 Version:
quelle
Für den Fall, dass es hilft: Hier ist die schnelle Abrundung der Ecken:
wobei cell eine Variable ist, die die Zelle steuert: Oft werden Sie diese in verwenden
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
Genießen!
quelle
Hier die Swift 4- Lösung, die aktualisiert wurde, um alle Ecken und nicht nur die oberen Ecken abzurunden:
quelle
Legen Sie die
layer
Attribute für die Zelle fest, nichtcontentView
.quelle
SWIFT 4.2
Dies sollte in Ihre benutzerdefinierte Zelle oder cellForItemAt eingefügt werden: Wenn Sie cellForItemAt: verwenden, wenden Sie sich an die Ersatzzelle self ->
Dadurch erhalten Sie eine Zelle mit einem abgerundeten Rand und einem Schlagschatten.
quelle
Hier ist meine Antwort, nahe an den anderen, aber ich füge der Ebene einen Eckenradius hinzu, da sonst die Ecken nicht richtig ausgefüllt werden. Auch dies macht eine nette kleine Erweiterung auf
UICollectionViewCell
.}}
Sie können es in
collectionView(_:cellForItemAt:)
der Datenquelle aufrufen, sobald Sie Ihre Zelle aus der Warteschlange entfernt haben.quelle
Sie müssen lediglich (a) setzen
cornerRadius
und (b) setzenshadowPath
, um ein abgerundetes Rechteck mit dem gleichen Radius zu sein wiecornerRadius
:quelle
Ich musste einige kleine Änderungen für Swift vornehmen :
quelle
Die Antwort von Mike Sabatini funktioniert einwandfrei. Wenn Sie die Zelleigenschaften direkt in der collectionView cellForItemAt konfigurieren, aber versuchen, sie in awakeFromNib () einer benutzerdefinierten UICollectionViewCell-Unterklasse festzulegen, wird auf den Geräten, die dies nicht tun, ein falscher bezierPath festgelegt Nicht mit der Breite und Höhe übereinstimmen, die zuvor in Ihrem Storyboard (IB) festgelegt wurden.
Die Lösung für mich bestand darin, eine Funktion in der Unterklasse von UICollectionViewCell zu erstellen und diese wie folgt aus cellForItemAt aufzurufen:
Und auf der CustomCollectionViewCell.swift:
quelle
Dieser hat für mich gearbeitet
quelle
Ich benutze die folgende Methode, um diese Art von Effekt zu erzielen:
quelle
Sie können Schattenfarbe, Radius und Versatz in der UICollectionViewDataSource- Methode festlegen , während Sie eine UICollectionViewCell erstellen
quelle
Hier ist meine Sicht auf die Lösung. Es ist ähnlich wie bei anderen Antworten, mit einem wesentlichen Unterschied. Es wird kein Pfad erstellt, der von den Grenzen der Ansicht abhängt. Jedes Mal, wenn Sie einen Pfad basierend auf den Grenzen erstellen und ihn der Ebene zur Verfügung stellen, können Probleme auftreten, wenn die Größe geändert wird, und Sie müssen Methoden einrichten, um den Pfad zu aktualisieren.
Eine einfachere Lösung besteht darin, die Verwendung von grenzabhängigen Elementen zu vermeiden.
Immer wenn sich die Zellengröße ändert, erledigt die Ansichts-API die gesamte Arbeit intern.
quelle
Ich habe eine wichtige Sache gefunden: Die UICollectionViewCell muss die Hintergrundfarbe als
clear
Farbe haben, damit diese oben funktionieren.quelle