2010-07-06 19 views
7

Desidero visualizzare uno UIToolbar con gli angoli arrotondati in cima, quale sarebbe il modo più semplice? la barra degli strumenti non è allineata in alto sulla finestra; ha un margine tutto intorno. Grazie!UIToolbar con angoli arrotondati

risposta

16

Molto semplice.

Prima di tutto, avere una variabile IBOutlet di UIToolbar nel file .h del controller di visualizzazione. Ad esempio.

@interface TextFormattedViewController : UIViewController { 
    IBOutlet UIToolbar *tBar; 
} 

Ora nel file .m del file controller della vista è sufficiente posizionare seguente codice & che funzionerà come una magia per voi. Tuttavia, si prega di aggiungere un commento in caso di domande.

#import "TextFormattedViewController.h" 
#import <QuartzCore/QuartzCore.h> 
@implementation TextFormattedViewController 
- (void)viewDidLoad { 
    // following statement is must. 
    tBar.clipsToBounds=YES; 
    CALayer *l=tBar.layer; 
    // set corner radious 
    [l setCornerRadius:10]; 
    // to apply border on corners 
    [l setBorderColor:[[UIColor redColor] CGColor]]; 
    // to apply set border width. 
    [l setBorderWidth:5.0]; 
} 
+1

Grazie zucchero per il tuo ottimo suggerimento! Per il miglior aspetto possiamo solo cambiare setCornerRadius (e rilasciare le ultime due chiamate). Produce bei angoli arrotondati antialias. Tuttavia tutti e quattro gli angoli sono arrotondati ... – rjobidon

2

Il modo più semplice per arrotondare gli angoli di una vista è con la proprietà cornerRadius (e masksToBounds) di CALayer. Tuttavia, con questo hai solo la possibilità di arrotondare tutti gli angoli allo stesso modo. Per utilizzare questa proprietà, è possibile inserire UIToolbar in un'altra vista più alta della barra degli strumenti, quindi arrotondare solo la parte superiore. Ciò funzionerebbe bene se un'altra vista avesse gli angoli inferiori arrotondati.

Il modo più semplice per mascherare vista di una forma arbitraria è impostare la proprietà mask di CALayer in un CAShapeLayer. Nel tuo caso, crea un per il CAShapeLayer utilizzando CGPathAddLineToPoint e CGPathAddArcToPoint o simile per ottenere solo gli angoli superiori arrotondati.

+0

+1 per la descrizione del mascheramento. – Anton