198 votes

Comment arrondir les coins d'un bouton

J'ai une image rectangle (jpg) et je veux l'utiliser pour remplir le fond d'un bouton avec des coins arrondis dans xcode.

J'ai écrit ce qui suit :

UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
CGRect frame = CGRectMake(x, y, cardWidth, cardHeight);
button.frame = frame;
[button setBackgroundImage:backImage forState:UIControlStateNormal];

Cependant, le bouton que j'obtiens avec cette approche n'a pas ses coins arrondis : c'est plutôt un rectangle simple qui ressemble exactement à mon image originale. Comment puis-je obtenir à la place une image aux coins arrondis pour représenter mon bouton ?

Merci !

446voto

devsri Points 2310

J'ai essayé la solution suivante avec UITextArea et je pense que cela fonctionnera également avec UIButton.

Tout d'abord, importez ceci dans votre fichier .m -

#import <QuartzCore/QuartzCore.h>

et ensuite dans votre loadView ajouter les lignes suivantes

    yourButton.layer.cornerRadius = 10; // this value vary as per your desire
    yourButton.clipsToBounds = YES;

7 votes

Fonctionne également avec l'inspecteur "Attributs d'exécution définis par l'utilisateur".

1 votes

Fonctionne aussi pour le martinet ! Il suffit de changer YES en true.

134voto

Krutarth Patel Points 2169

Vous pouvez réaliser par ce RunTime Attributes

enter image description here

nous pouvons créer un bouton personnalisé. voyez la capture d'écran ci-jointe.

veuillez faire attention :

dans les attributs d'exécution pour changer la couleur de la bordure, suivez cette instruction

  1. créer une classe de catégorie de CALayer

  2. dans le fichier h

    @property(nonatomic, assign) UIColor* borderIBColor;
  3. dans le fichier m :

    -(void)setBorderIBColor:(UIColor*)color {
        self.borderColor = color.CGColor;
    }
    
    -(UIColor*)borderIBColor {
        return [UIColor colorWithCGColor:self.borderColor];
    }

à partir de maintenant pour définir la couleur de la bordure vérifier la capture d'écran

updated answer

merci

4 votes

C'est moi ou les informations contenues dans la réponse sont incomplètes ? Cela ne fonctionne pas vraiment. Mise à jour : ça marche tant que je ne précise pas borderColor . Mais il utilise toujours le noir comme couleur de bordure.

3 votes

Réponse étendue : La couleur définie dans l'IB est probablement de type UIColor qui ne fonctionne pas avec borderColor, qui est de type CGColorRef. Ou quelque chose comme ça. Une solution consiste donc à créer une catégorie sur CALayer, avec quelque chose comme @property(nonatomic, assign) UIColor* borderIBColor; (qui n'entre pas en conflit avec un autre nom) dans le fichier d'en-tête, et l'implémentation est : -(void)setBorderIBColor:(UIColor*)color{self.borderColor = color.CGColor;} -(UIColor*)borderIBColor{return [UIColorcolorWithCGColor:self.borderColor];}

1 votes

Si vous ne voulez pas de couleur de bordure, définissez le borderRadius à 0 et vous n'en aurez pas !

15voto

Repousser les limites rayon du coin vers le haut pour obtenir un cercle :

    self.btnFoldButton.layer.cornerRadius = self.btnFoldButton.frame.height/2.0;

enter image description here

Si le cadre du bouton est un carré, frame.height ou frame.width n'ont pas d'importance. Sinon, utilisez la plus grande des deux.

14voto

Andrey Gordeev Points 6348

Vous pouvez consulter ma bibliothèque intitulée DCKit . Il est écrit sur la dernière version de Swift .

Vous pourriez créer un bouton/champ de texte à coins arrondis directement à partir du générateur d'interface :

DCKit: rounded button

Il dispose également de nombreuses autres fonctionnalités intéressantes, telles que les champs de texte avec validation, les contrôles avec bordures, les bordures en pointillés, les vues en cercle et en trait d'union, etc.

10voto

Vinay Mahipal Points 81
UIButton* closeBtn = [[UIButton alloc] initWithFrame:CGRectMake(10, 50, 90, 35)];
//Customise this button as you wish then
closeBtn.layer.cornerRadius = 10;
closeBtn.layer.masksToBounds = YES;//Important

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X