2010-12-16 16 views

Antwort

14

Sie können dies tun, indem Sie die layer der Ansicht und ihre masksToBounds Eigenschaft bearbeiten. Ich habe den folgenden Code in einer UIView Kategorie:

#import <QuartzCore/QuartzCore.h> 
... 
- (void)addRoundedCornersWithRadius:(NSInteger)cornerRadiusInPixels 
{ 
    self.layer.cornerRadius = cornerRadiusInPixels; 
    self.layer.masksToBounds = YES; 
    self.opaque = NO; 
} 

- (void)makeEndsRounded 
{ 
    CGFloat minSide = fmin(self.bounds.size.width, self.bounds.size.height); 
    [self addRoundedCornersWithRadius:minSide/2]; 
} 
+0

Was ist der Zweck der Zeile "self.layer.masksToBounds = YES;"? – Jumhyn

+1

Sublayer werden ebenfalls abgeschnitten. Um das zu tun, müssen Sie eigentlich nur 'CALayer.h' importieren, aber es gibt keine Vorteile beim Importieren einer Datei anstelle eines Frameworks. Vielmehr enthalten Header-Dateien wie 'CALayer.h' Kommentare, die Ihnen helfen und Sie können diese durchsehen, wenn Sie eine Frage haben. – SK9

+0

Ich werde auch sagen, dass in meiner begrenzten Erfahrung die Animation einer abgerundeten Ebene für das iPhone teuer ist. – SK9

0

Nicht, dass ich weiß - seit UIViews sind durch CGRects spezifiziert sind sie technisch immer rechteckig. Wenn Sie einen runden Effekt wünschen, benötigen Sie ein Hintergrundbild mit abgerundeten Ecken.

+0

ok NVM dies die anderen Antworten sind besser – prgmast3r

Verwandte Themen