Ich habe das folgende Stück Code nur bestimmte Ecken Blick abzurunden:Runde bestimmte Ecken und zeigen Schatten auf bestimmte Seiten nur
- (void)roundOnlySpecifiedCornersInView:(UIView *)view corners:(UIRectCorner)corners
{
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:(corners) cornerRadii:CGSizeMake(4.0, 4.0)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.path = maskPath.CGPath;
view.layer.mask = maskLayer;
}
Das funktioniert perfekt isoliert. Jetzt möchte ich auch Schatten meiner Meinung nach, aber ich möchte speziell Schatten in verschiedenen Fällen anzuwenden:
- auf allen Seiten
- alle Seiten mit Ausnahme Boden
- allen Seiten mit Ausnahme oben
- links/rechts Seiten nur
Alle Techniken, die ich vorfand, arbeiten, indem ich einen Einsatz der Ansicht erstelle. Das Problem dabei ist, dass Sie, wenn Sie nur Schatten auf der linken/rechten Seite behalten möchten, den unteren und oberen Rand verschieben. Da das Rect jetzt weniger hoch ist, deckt der Schatten links und rechts nicht die gesamte Höhe der Ansicht ab. Die Maskenebene, die zum Abrunden der Ecken verwendet wird, bewirkt, dass der Schatten nicht mehr erscheint.
Beispielcode für diese:
innerView.layer.shadowColor = [[UIColor colorWithWhite:0.0f alpha:0.1f] CGColor];
innerView.layer.shadowOpacity = 1.0f;
innerView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
innerView.layer.shadowRadius = 6.0f;
CGRect shadowFrame = UIEdgeInsetsInsetRect(innerView.bounds, UIEdgeInsetsMake(9, 0, 9, 0));
CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:shadowFrame].CGPath;
innerView.layer.shadowPath = shadowPath;
Wie kann ich bestimmte Ecken in einer Ansicht abzurunden und gleichzeitig zeigen Schattenzeit nur zu bestimmten Seiten?
Antworten in Swift werden auch geschätzt!
Screenshots von dem, was ich will (dies ist einfach, da alle Ecken abgerundet werden müssen, so kann ich .layer.cornerRadius
verwenden und es hat auf allen Seiten Schatten):
Jetzt will ich runde gerade nur 2 von die Ecken (oben links und oben rechts, unten links und unten rechts) und fügen nur einigen Seiten Schatten hinzu.
Können Sie Screenshots von dem zeigen, was Sie haben/wollen? – jtbandes
http://stackoverflow.com/questions/22679886/how-to-make-a-uiview-with-optional-rounded-corners-and-border/22680538#22680538 –
@KiritModi Sie beziehen sich auf die exakt gleichen Code I schon für abgerundete Ecken. – edwardmp