2012-12-28 10 views
7

Ho fatto un po 'di ricerche e vedo che non esiste un modo semplice per fare solo in alto a destra e in alto a sinistra del turno di UIView, giusto?Creare angoli specifici di UIView round

ps. Questo codice rende tutti e 4 gli angoli arrotondati che sono smth. Non voglio

#import <QuartzCore/QuartzCore.h> 

self.layer.cornerRadius = 5; 
self.layer.masksToBounds = YES; 
+1

http://stackoverflow.com/questions/4847163/round-two-corners-in-uiview?rq=1 –

+0

possibile duplicato di [come impostare cornerRadius solo in alto a sinistra e in alto -dell'angolo di un UIView?] (http://stackoverflow.com/questions/10167266/how-to-set-cornerradius-for-only-top-left-and-top-right-corner-of-a-uuiview) –

risposta

22

si può fare con questo frammento:

// Set top right & left corners 
[self setMaskTo:yourView byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight]; 

EDIT

Scusa, ho dimenticato questa

- (void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners 
{ 
    UIBezierPath *rounded = [UIBezierPath bezierPathWithRoundedRect:view.bounds 
                byRoundingCorners:corners 
                 cornerRadii:CGSizeMake(8.0, 8.0)]; 
    CAShapeLayer *shape = [[CAShapeLayer alloc] init]; 
    [shape setPath:rounded.CGPath];  
    view.layer.mask = shape; 
} 

PS: come ho detto nel commento, se usi cose come questa quando mostri le celle UITableViewCell, io ho fo e che è sempre una scelta migliore usare le immagini di sfondo perché questo genere di cose da disegno influisce sempre sulle prestazioni.

+1

FYI, se si usano cose come questa quando si visualizzano celle 'UITableViewCell', ho trovato che è sempre una scelta migliore per usare le immagini di sfondo perché questo tipo di disegno influenza sempre le prestazioni. – amb

+2

probabilmente questo commento dovrebbe essere detto nella risposta, mascherare una vista è un grande successo nelle prestazioni e dovrebbe sempre essere con le immagini di sfondo se puoi aiutarlo – wattson12

+0

Grazie per il commento funziona! ps. Non lo uso come UITableViewcell, comunque, anche se lo fossi non saprei davvero come farlo usando le immagini di sfondo ...: (((ma grazie comunque – user1903992

0

ho provato le estensioni per l'UIView una volta e non ha funzionato per me, perché hanno causato problemi al momento di elaborare una cella

ho ottenuto una soluzione migliore e più facile ora in 2 fasi che ha funzionato perfettamente bene :)

1) una riga di codice (Swift 2.0) - ferisce tutti i 4 angoli di vista:

YourView.layer.cornerRadius = 10 

2) ed un'aggiunta in storyboard si aggiunge 1 visita con gli angoli regolari in cui è necessario non angoli arrotondati e regola i vincoli di cui hai bisogno: nota che la piccola vista ad angolo regolare dovrebbe essere dietro la vista principale. This is how it looks in storyboard

Here you can see constraints needed for the small view

Problemi correlati