Ich versuche, nur die oberen Ecken (TopLeft und TopRight) einer Ansicht und Bildansicht zu runden. Mit dem untenstehenden Code konnte ich nur die linke Ecke abrunden (obwohl auch TopRight angegeben ist). Vielleicht sieht er die Beschränkung nicht, die dem Storyboard auferlegt wird.Glatt nur obere Winkel und Bildansicht in Swift
Wie repariere ich?
Vielen Dank.
let rectShape = CAShapeLayer()
rectShape.bounds = self.CopertinaImage1.frame
rectShape.position = self.CopertinaImage1.center
rectShape.path = UIBezierPath(roundedRect: self.CopertinaImage1.bounds, byRoundingCorners: [.TopRight, .TopLeft], cornerRadii: CGSize(width: 10, height: 10)).CGPath
self.CopertinaImage1.layer.backgroundColor = UIColor.greenColor().CGColor
self.CopertinaImage1.layer.mask = rectShape
Die rechte Ecke ist immer das gleiche: Edit:
Ich habe versucht, den folgenden Code in viewDidLayoutSubviews
Abdrucken:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let rectShape = CAShapeLayer()
rectShape.bounds = self.CopertinaImage1.frame
rectShape.position = self.CopertinaImage1.center
rectShape.path = UIBezierPath(roundedRect: self.CopertinaImage1.bounds, byRoundingCorners: [.TopRight, .TopLeft], cornerRadii: CGSize(width: 10, height: 10)).CGPath
self.CopertinaImage1.layer.backgroundColor = UIColor.greenColor().CGColor
self.CopertinaImage1.layer.mask = rectShape
}
Aber es hat nicht funktioniert .
Wenn ehedem mit Auto-Layout Sie müssen Ihren Code nach der Auto-Layout-Engine Ihrer Ansicht des Frames beendet Einstellung gehen. Wahrscheinlich 'viewDidLayoutSubviews', wenn Sie diese – beyowulf
versucht, in einem' UIViewController' tun, aber es funktioniert nicht ich unter den viewDidLoad eingegeben Überschreibung func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() lassen rectShape = CAShapeLayer() = rectShape.bounds self.CopertinaImage1.frame rectShape.position = self.CopertinaImage1.center rectShape.path = UIBezierPath (roundedRect: self.CopertinaImage1.bounds, byRoundingCorners: [.TopRight, .TopLeft], cornerRadii: CGSize (Breite: 10, Höhe: 10)). CGPath self.CopertinaImage1.layer.backgroundColor = UIColor.GreenColor(). CGColor self.CopertinaImage1.layer.Maske = RectShape –
Ist die Ansicht, die Sie versuchen, in einer Unterklasse "UITableViewCell" zu maskieren? Wenn ja, sollte der Code in den 'LayoutSubviews' davon sein. Auch 'rectShape.bounds = self.CopertinaImage1.frame' und' rectShape.position = self.CopertinaImage1.center' scheinen mir falsch zu sein. Ich würde versuchen, sie zu ersetzen mit 'rectShape.frame = self.CopertinaImage1.bounds' – beyowulf