2017-06-01 3 views
0

Ich versuche eine runde Sammlungsansichtszelle zu erstellen.UICollectionView Zelle mit dicker Umrandung

In der Zelle habe ich eine rote UIView, die 0 von oben, vor, nach unten und unten ist. Innerhalb dieser Zelle habe ich eine andere Ansicht, die weiß ist und 4 von oben, vorne, unten und unten. In dieser Ansicht befindet sich ein UILabel und ein UIImageView.

Das Ziel wäre 2 Zellen pro Spalte zu haben und es hat einen roten Ring um einen weißen Kreis und Text und ein Bild.

die runden UIViews erstellen ich für UIView wie diese

extension UIView { 
    func createRoundView() { 
    layer.cornerRadius = frame.size.width/2 
    clipsToBounds = true 
    } 
} 

Innerhalb meiner cellForItemAt eine Verlängerung haben ich sagen

cell.whiteBackgroundView.createRoundView() 
cell.colorStatusView.createRoundView() 

Das Ziel auf der linken Seite, aber was geschieht, Es ist rechts.

enter image description here

Hier ist mein Storyboard

enter image description here

Die Einschränkungen sind alle blau, nichts rot.

Und die 2-Zelle pro Spalte bekommen verwende ich diese Delegatmethode

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
    let padding: CGFloat = 25 
    let collectionCellSize = collectionView.frame.size.width - padding 
    return CGSize(width: collectionCellSize/2, height: collectionCellSize/2) 
} 

Jede Idee, was könnte ich tun falsch sein?

Am Ende ist es egal, wenn ich eine Ansicht innerhalb einer Ansicht habe. Ich ändere die Ring- oder Rahmenfarbe basierend auf anderen Daten .... also muss ich einfach in der Lage sein, diese Rahmenfarbe zu ändern.

Antwort

2

Dieser Code ist nicht genug, zu sagen, was dort vor sich geht ... versuchen, alle auf Set

backgroundColors to .clear 

dann diese Eigenschaften zu Ihrer Ansicht

customView.layer.cornerRadius = half of your width 
customView.layer.borderWidth = 5 
customView.layer.borderColor = UIColor.red.cgColor 
0

Antwort Mit @blinkmeoff ich dachte, es aus meist (obwohl Follow-up-Frage zu kommen)

Innerhalb der Zelle Klasse fügte ich die folgenden

self.backgroundViewContainer.layoutIfNeeded()  
self.backgroundViewContainer.layer.cornerRadius = min(backgroundViewContainer.frame.size.width, backgroundViewContainer.frame.size.height)/2 
self.backgroundViewContainer.clipsToBounds = true 

hielt ich seltsame Formen immer nur um die/2 damit ich die min (ba hinzugefügt ...

und das hat mich perfekte Kreise

Verwandte Themen