我正在尝试在自定义UIButton周围绘制边框。这不起作用:
为什么?
click here to solve the problem
[请允许我在这里重复。.^ _ ^
运行时属性功能允许我们设置UIColor类型,需要将其转换为CGColor类型。为此,我们需要扩展CALayer类,该属性将转换UIColor到CGColor,我们需要它的边框和阴影。
您可以使用类别扩展Objective-C中的类。我添加了两个名为borderIBColor和shadowIBColor的属性,它们均为UIColor类型。 IB代表界面构建器。我必须给这些属性指定一个唯一的名称,以避免名称与CGColor类型的原始属性borderColor和shadowColor冲突。
请参阅以下代码。
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
最后,当您在xib或情节提要中设置运行时属性功能的borderColor时,请设置borderIBColor而不是borderColor。看起来像layer.borderIDColor
玩得开心。
cornerRadius&cornerRadius是CGFloat,使用数字进行更改。
borderColor为CGColor,无法通过运行时属性进行更改。 (您可以添加类别以支持UIColor来更改CGColor)
助手类别:
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
并在运行时属性中使用borderColor。直接
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9jdDBUQS5qcGcifQ==” alt =“在此处输入图像描述”>
分配其他属性后,您忘记了layer.masksToBounds = true属性。它对我有用。