2011-02-18 22 views
148

Tengo una imagen rectangular (jpg) y quiero usarla para rellenar el fondo de un botón con una esquina redondeada en xcode.Cómo redondear las esquinas de un botón

me escribió lo siguiente:

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

Sin embargo, el botón consigo con ese enfoque no tiene sus esquinas redondeadas: es más bien un rectángulo normal que se ve exactamente igual que mi imagen original. ¿Cómo puedo obtener una imagen con una esquina redondeada para representar mi botón?

Gracias!

Respuesta

385

Creo que recibí su problema, probé la siguiente solución con el UITextArea y supongo que esto también funcionará con UIButton.

en primer lugar la importación esto en su archivo .m -

#import <QuartzCore/QuartzCore.h> 

y luego en su método de loadView añadir siguientes líneas

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

Espero que esto funcione para usted y en caso afirmativo se comunican.

+1

Muchas gracias. No solo esto es lo que necesitaba, sino que respondiste mi siguiente pregunta, que era averiguar si se podía ajustar el radio de la esquina. – double07

+5

Muchas gracias, especialmente por la sugerencia de clipsToBounds. – Chris

+4

También funciona con el inspector "Atributos de tiempo de ejecución definidos por el usuario" –

2

Si quieres una esquina redondeada sólo en una esquina o dos esquinas, etc ... leer esto mensaje:

[ObjC] - UIButton con esquinas redondeadas - http://goo.gl/kfzvKP

es un XI ter/subclase Storyboard. Importar y establecer bordes sin escribir código.

6

importación QuartCore marco si no está allí en su proyecto existente, a continuación, importe #import <QuartzCore/QuartzCore.h> en viewcontroller.m

UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect]]; 
CGRect frame = CGRectMake(x, y, width, height); // set values as per your requirement 
button.layer.cornerRadius = 10; 
button.clipsToBounds = YES; 
94

Usted puede lograr por esta atributos de ejecución

enter image description here

podemos hacer un botón personalizado. Simplemente vea la captura de pantalla adjunta.

amablemente prestar atención:

en tiempo de ejecución atributos para cambiar el color del borde seguir esta instrucción

  1. crear clase de categoría de CALayer

  2. en el archivo h

    @property(nonatomic, assign) UIColor* borderIBColor; 
    
  3. en m archivo:

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

ahora en adelante para establecer la frontera verificación de color pantalla

updated answer

gracias

+2

esto funciona.estaba buscando una forma de guión gráfico para hacerlo. – kennydust

+0

gracias a todos ustedes por su amplia ayuda –

+2

¿Solo yo o la información en la respuesta es incompleta? Realmente no funciona. Actualización: funciona siempre que no especifique 'borderColor'. Pero luego siempre usa negro para borderColor. – Jonny

11

Es posible que desee comprobar hacia fuera mi biblioteca llamada DCKit . Está escrito en la última versión de Swift.

Usted sería capaz de hacer un campo redondeada botón de la esquina/de texto desde el constructor de interfaz directa:

DCKit: rounded button

También tiene muchas otras características interesantes, tales como campos de texto con la validación, controla con fronteras, las fronteras frustradas, el círculo y vistas finas etc.

6

llegando al límite radio de esquina hasta obtener un círculo:

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

enter image description here

Si marco de botón es una plaza que no importa frame.height o frame.width. De lo contrario, use el más grande de los dos.

4
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 
1

Primer conjunto width = 100 y Altura = 100 de botón

YourBtn1.layer.cornerRadius=YourBtn1.Frame.size.width/2; 
YourBtn1.layer.borderColor=[uicolor blackColor].CGColor; 
YourBtn1.layer.borderWidth=1.0f; 
1

Para Swift:

button.layer.cornerRadius = 10.0 
2

actualizado para Swift 3:

utilizado por debajo código para hacer una esquina de UIButton:

yourButtonOutletName.layer.cornerRadius = 0.3 * 
     yourButtonOutletName.frame.size.height 
Cuestiones relacionadas