Es ist jetzt iOS 6, möglicherweise haben sich die Dinge geändert. Die Antwort von TheSquad funktioniert bei mir erst, wenn ich eine weitere Zeile hinzugefügt habe view2.layer.masksToBounds = NO;
, da sonst kein Schatten angezeigt wird . Obwohl in der Dokumentation masksToBounds
standardmäßig NEIN angegeben ist, zeigt mein Code das Gegenteil.
So erstelle ich eine Schaltfläche mit abgerundeten Ecken und Schatten, die zu den am häufigsten verwendeten Codeausschnitten in meiner App gehört.
button.layer.masksToBounds = YES;
button.layer.cornerRadius = 10.0f;
view.layer.masksToBounds = NO; // critical to add this line
view.layer.cornerRadius = 10.0f;
view.layer.shadowOpacity = 1.0f;
// set shadow path to prevent horrible performance
view.layer.shadowPath =
[UIBezierPath bezierPathWithRoundedRect:_button.bounds cornerRadius:10.0f].CGPath;
[view addSubview:button];
BEARBEITEN
Wenn Ansichten animiert oder gescrollt werden müssen, ist die masksToBounds = YES
Steuerleistung erheblich, was bedeutet, dass die Animation wahrscheinlich stottern wird. Verwenden Sie stattdessen den folgenden Code, um abgerundete Ecken und Schatten zu erhalten UND Animationen oder Bildläufe zu glätten:
button.backgroundColor = [UIColor clearColor];
button.layer.backgroundColor = [UIColor redColor].CGColor;
button.layer.masksToBounds = NO;
button.layer.cornerRadius = 10.0f;
view.layer.shadowOpacity = 0.5f;
view.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:_button.bounds cornerRadius:10.0f].CGPath;
view.layer.shadowOffset = CGSizeMake(0.0f, 4.0f);
view.layer.shadowRadius = 2.0f;
view.layer.masksToBounds = NO;
view.layer.cornerRadius = 10.0f;
[view addSubview:button];