2010-07-06 17 views
7

Je veux afficher un UIToolbar avec des coins arrondis sur le dessus, quelle serait la manière la plus facile? la barre d'outils n'est pas alignée sur la fenêtre; il a une marge tout autour. Merci!UIToolbar avec les coins arrondis

Répondre

16

Très simple. Tout d'abord, ayez une variable IBOutlet de UIToolbar dans votre fichier .h de votre contrôleur de vues. Par exemple.

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

maintenant dans votre fichier .m de votre vue fichier contrôleur il suffit de placer le code suivant & il fonctionnera comme une magie pour vous. Toutefois, s'il vous plaît ajouter un commentaire si des requêtes.

#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

Merci sucre pour votre grande suggestion! Pour le meilleur aspect, nous ne pouvons changer que setCornerRadius (et supprimer les deux derniers appels). Il produit de beaux coins arrondis anti-aliasés. Cependant, les quatre coins sont arrondis ... – rjobidon

2

La méthode la plus simple pour arrondir les angles d'une vue est la propriété cornerRadius (et masksToBounds) de CALayer. Cependant, avec cela vous avez seulement la possibilité d'arrondir tous les coins également. Pour utiliser cette propriété, vous pouvez placer le UIToolbar dans une autre vue plus grande que la barre d'outils, de sorte que seul le sommet a été arrondi. Cela fonctionnerait bien si une autre vue a arrondi les coins inférieurs.

La méthode la plus simple pour masquer une vue à une forme arbitraire consiste à définir la propriété mask de CALayer sur une nouvelle CAShapeLayer. Dans votre cas, créez un CGPath pour le CAShapeLayer en utilisant CGPathAddLineToPoint et CGPathAddArcToPoint ou similaire pour obtenir uniquement les coins supérieurs arrondis.

+0

+1 pour le conseil sur le masquage. – Anton