Los attributes de time de ejecución definidos por el usuario de UIButton no funcionan

Estoy tratando de dibujar un borde alnetworkingedor de un UIB personalizado. Esto no funciona: introduzca la descripción de la imagen aquí

¿por qué?

haga clic aquí para resolver el problema

Permíteme repetirlo aquí … ^ _ ^

La function de atributo de time de ejecución nos permite establecer un tipo UIColor, que necesitamos traducir a un tipo CGColor. Para lograr esto, necesitamos extender la class CALayer con una propiedad que traduzca el UIColor al CGColor que necesitamos para el borde y la sombra.

Puede extender classs en Objective-C usando una categoría. Agregué dos properties llamadas borderIBColor y shadowIBColor que son de tipo UIColor. El IB significa generador de interfaces. Debo darles a estas properties un nombre único para evitar conflictos de nombres con las properties originales llamadas borderColor y shadowColor que son del tipo CGColor.

Por favor vea el siguiente código.

CALayer + RuntimeAttribute.h

@import QuartzCore; @interface CALayer (IBConfiguration) @property(nonatomic, assign) UIColor *borderIBColor; @end 

CALayer + RuntimeAttribute.m

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

Finalmente, cuando configura la function de atributo borderColor of runtime en xib o storyboard, establezca borderIBColor en lugar de borderColor . Parece que layer.borderIDColor

Diviértete.

cornerRadius & cornerRadius es CGFloat, usa Number para cambiar.

borderColor es CGColor, no se puede cambiar por el atributo Runtime. (puede agregar una categoría para admitir UIColor para cambiar CGColor)

Categoría ayudante:

UIView + IBHelper.h:

 @interface UIView (IBHelper) - (void)setBorderColor:(UIColor *)color; @end 

UIView + IBHelper.m:

 @implementation UIView (IBHelper) - (void)setBorderColor:(UIColor *)color { self.layer.borderColor = color.CGColor; } @end 

y use borderColor en el atributo Runtime. directamente

introduzca la descripción de la imagen aquí