ios - guidelines - Establezca el ancho y el color del borde de la capa UIButton en Interface Builder
uicontrolstate swift (3)
¿Puedo usar IB_DESIGNABLE y / o IBInspectable para establecer layer.borderWidth y layer.borderColor en Interface Builder? Actualmente estoy creando mi botón en código, pero me gustaría poder configurar todo esto en IB, pero no estoy seguro de que estas propiedades puedan configurarse de esa manera en Xcode 6. Me gustaría hacer de esto un IBOutlet En lugar de tener todo esto establecido en el código. Aquí está mi código de botón ahora.
directions = [UIButton buttonWithType:UIButtonTypeRoundedRect];
directions.titleLabel.textAlignment = NSTextAlignmentCenter;
directions.titleLabel.font = [UIFont fontWithName:@"FranklinGothicStd-ExtraCond" size:20.0];
[directions setTitle:@"Directions" forState:UIControlStateNormal];
[directions setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
directions.frame = CGRectMake(20, 178, 70, 70);
directions.layer.borderWidth = 2.0f;
directions.layer.borderColor = [UIColor whiteColor].CGColor;
directions.clipsToBounds = YES;
directions.backgroundColor = [UIColor clearColor];
[directions addTarget:self action:@selector(getDirections:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:directions];
Configuré estos valores como se sugiere y el borde nunca se muestra en el simulador. EDITAR: descubrí por qué no se mostraba el borde al configurar estos valores en IB. El color del borde es un CGColor, así que tuve que establecerlo en código.
En realidad, puede establecer algunas propiedades de la capa de una vista a través del generador de interfaces. Sé que puedo configurar borderWidth y cornerRadius de una capa a través de xcode. BorderColor no funciona, probablemente porque la capa desea un CGColor en lugar de un UIColor.
Puede que tengas que usar cadenas en lugar de números, ¡pero funciona!
Pero puede usar categorías para las propiedades de proxy como layer.borderColor. (De la ConventionalC CocoaPod)
CALayer + XibConfiguration.h:
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
@interface CALayer(XibConfiguration)
// This assigns a CGColor to borderColor.
@property(nonatomic, assign) UIColor* borderUIColor;
@end
CALayer + XibConfiguration.m:
#import "CALayer+XibConfiguration.h"
@implementation CALayer(XibConfiguration)
-(void)setBorderUIColor:(UIColor*)color
{
self.borderColor = color.CGColor;
}
-(UIColor*)borderUIColor
{
return [UIColor colorWithCGColor:self.borderColor];
}
@end
El resultado será evidente durante el tiempo de ejecución, no en Xcode.
Puede configurar la mayoría de aquellos en el generador de interfaces agregando atributos de tiempo de ejecución a los elementos:
Para layer.borderWidth = 2.0f; sería:
Seleccione el botón y añada un nuevo atributo.
ruta de acceso: layer.borderWidth
tipo: valor del número 2
Estos cambios no serán visibles dentro del generador de interfaces, solo en tiempo de ejecución
Sí, puede hacer clic en el lado derecho en el inspector de identidad. Encontrará algo así.
haga clic en +
en User Defined Runtime Attributes
seleccione la keypath
y edítela
escribe el codigo asi
layer.cornerRadius
y en Type
cambian el tipo a number
y establecen el valor requerido como este
También puedes cambiar los colores del texto y tantos.
Feliz codificacion