Gibt es eine Möglichkeit, den cornerRadius
nur für die obere linke und obere rechte Ecke einer UIView
zu setzen?
Ich habe Folgendes versucht, aber danach konnte ich die Ansicht nicht mehr sehen.
UIView *view = [[UIView alloc] initWithFrame:frame];
CALayer *layer = [CALayer layer];
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRoundedRect:frame byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight) cornerRadii:CGSizeMake(3.0, 3.0)];
layer.shadowPath = shadowPath.CGPath;
view.layer.mask = layer;
9 Stimmen
Nach Ihrer Bearbeitung drei Dinge zu beheben: (1) der abgerundete Pfad sollte auf
view.bounds
basieren, nicht aufframe
, (2) die Ebene sollte einCAShapeLayer
sein, nichtCALayer
; (3) setzen Sie denpath
der Ebene, nichtshadowPath
.1 Stimmen
Möglicher Duplikat dieser Frage & Antwort.
0 Stimmen
Verwenden Sie den Bezier-Kurvenalgorithmus, um Kurven auf einem CGPath zu erstellen. Ich bin mir ziemlich sicher, dass es Teil von CoreGraphics ist. Wenn nicht, hat en.wikipedia.org/wiki/Bézier_curve einige großartige Definitionen und Animationen.
0 Stimmen
iosdevcenters.blogspot.com/2018/02/…
0 Stimmen
Siehe meine Antwort hier: stackoverflow.com/a/50396485/6246128
0 Stimmen
Es ist auf iOS 11 und höher viel einfacher: johncodeos.com/…
0 Stimmen
IOS 11 - Lösung nur für den Interface Builder: stackoverflow.com/a/58626264