rounded round radius make how corners buttons ios uibutton cornerradius setbackground

ios - radius - swift 4 round button



establecer cornerRadius y setbackgroundimage a UIButton (5)

Estoy intentando establecer cornerRadius of UIButton pero no sé cómo hacerlo.

Si me gusta esto:

button.layer.cornerRadius = 5;

funciona bien, si me gusta esto:

button.layer.cornerRadius = 5; [button setBackgroundColor:[UIColor colorWithPatternImage:radialGradient]];

las esquinas no están redondeadas

Sé que podría resolver este ápice

[button.layer setMasksToBounds:YES];

pero específicamente busco una solución diferente, porque agrego algunas flechas al botón y si configuro la máscara a los límites, las flechas quedan enmascaradas.

EDITAR:

radialGradient está hecho con func

+ (UIImage *)getRadialGradientImage:(CGSize)size centre:(CGPoint)centre radius:(float)radius startColor:(UIColor *)startColor endColor:(UIColor *)endColor{ // Initialise UIGraphicsBeginImageContextWithOptions(size, YES, 1); // Create the gradient''s colours size_t num_locations = 2; CGFloat locations[2] = { 0.0, 1.0 }; const CGFloat *component_first = CGColorGetComponents([startColor CGColor]); CGFloat red1 = component_first[0]; CGFloat green1 = component_first[1]; CGFloat blue1 = component_first[2]; const CGFloat *component_second = CGColorGetComponents([endColor CGColor]); CGFloat red2 = component_second[0]; CGFloat green2 = component_second[1]; CGFloat blue2 = component_second[2]; const CGFloat components[8] = { red1,green1,blue1,1,red2,green2,blue2,1}; // End color CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB(); CGGradientRef myGradient = CGGradientCreateWithColorComponents (myColorspace, components, locations, num_locations); // Normalise the 0-1 ranged inputs to the width of the image CGPoint myCentrePoint = CGPointMake(centre.x * size.width, centre.y * size.height); float myRadius = MIN(size.width, size.height) * radius; // Draw it! CGContextDrawRadialGradient (UIGraphicsGetCurrentContext(), myGradient, myCentrePoint, 0, myCentrePoint, myRadius, kCGGradientDrawsAfterEndLocation); // Grab it as an autoreleased image UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); // Clean up CGColorSpaceRelease(myColorspace); // Necessary? CGGradientRelease(myGradient); // Necessary? UIGraphicsEndImageContext(); // Clean up return image; }


// crear un botón como este

UIButton *cancel=[[UIButton alloc]initWithFrame:CGRectMake(9, 9,35,35)]; cancel.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"BackX.png"]]; [cancel setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [cancel.layer setBorderColor: [[UIColor blackColor] CGColor]]; [cancel.layer setBorderWidth: 1.0]; cancel.contentMode=UIViewContentModeScaleAspectFill; cancel.clipsToBounds=YES; cancel.layer.cornerRadius=8.0; [cancel addTarget:self action:@selector(cancelbtnclk1:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:cancel];

Antes, agregue QuartzCore Framework e importe QuartzCore / CoreAnimation.h en su archivo .h.

Espero que te ayude ...


Aquí es cómo crearía un botón a través del código y establecería su color de fondo.

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(100, 100, 100,50); [btn setTitle:@"Hello" forState:UIControlStateNormal]; [btn setBackgroundColor:[UIColor colorWithRed:128.0/255.0f green:0.0/255.0f blue:0.0/255.0f alpha:0.7]]; btn.frame = CGRectMake(100.0, 100.0, 120.0, 50.0);//width and height should be same value btn.clipsToBounds = YES; btn.layer.cornerRadius = 20;//half of the width btn.layer.borderColor=[UIColor redColor].CGColor; btn.layer.borderWidth=2.0f; [self.view addSubview:btn];

A continuación se muestra la imagen del botón que está relacionado con el código anterior

Siempre puedes jugar con el código y crear los colores que necesitas para el fondo y el borde. Espero que esto te ayude.


Establezca Radio de esquina en el Inspector de identidad para Botón. Ver Pic

Establecer la imagen de fondo en el Inspector de atributos para el botón. Ver foto


También puede tener:

btn.clipsToBounds = true;


btn.clipsToBounds = YES;

Acabo de agregar esto y funcionó para mí. De hecho, pude establecer el radio de la esquina para UIButton con la configuración de una imagen para ese UIButton en particular.