In benutzerdefinierte TabelleView-Zelle möchte ich UIView mit abgerundeten Ecken auf der Oberseite erstellen. Hier ist der Teil des Codes, wo ich die Einstellung der Zwänge der UIViewAbgerundete Ecken ändert UIView Größe
headerView.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 8).isActive = true
headerView.topAnchor.constraint(equalTo: self.topAnchor, constant: 4).isActive = true
headerView.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -8).isActive = true
headerView.heightAnchor.constraint(equalToConstant: 40).isActive = true
Bellow dieses Teils abgerundeten Ecken Sicht gesetzt ich getan habe folgendes:
self.layoutIfNeeded()
let rectShape = CAShapeLayer()
rectShape.bounds = headerView.layer.frame
rectShape.position = headerView.center
rectShape.path = UIBezierPath(roundedRect: headerView.layer.bounds, byRoundingCorners: [ .topLeft, .topRight], cornerRadii: CGSize(width: 10, height: 10)).cgPath
headerView.layer.backgroundColor = UIColor.green.cgColor
headerView.layer.mask = rectShape
Das Problem ist, dass, wenn Dieser Codeblock wird verwendet, um abgerundete Ecken zu setzen. Die Größe der Ansicht ändert sich. Hier ist die Ausgabe
Und das Ergebnis ohne diesen Teil des Codes ist folgende:
Meine Frage ist, warum die Ansichtsgröße ändert? Was mache ich falsch?
Ich bin mir nicht sicher, aber ich nehme an, dies liegt wahrscheinlich daran, dass Sie die 'Schicht' der Ansicht ändern und somit die Autolayout-Bedingungen beeinflussen. Wenn Sie nur die Ecken der Ansicht abrunden möchten, brauchen Sie 'CAShapeLayer' nicht zu verwenden. –
Ich möchte nur abgerundete Ecken haben, deshalb ist es der Grund, warum ich CAShapeLayer verwende. –