在Xcode 5中,如果不直接在代码中设置,我无法为我的按钮添加边框。是否可能在Storyboard上没有办法实现这一点,而必须制作自定义背景图像?
在Xcode 5中,如果不直接在代码中设置,我无法为我的按钮添加边框。是否可能在Storyboard上没有办法实现这一点,而必须制作自定义背景图像?
您可以使用键路径。
例如,如图所示描述的圆角半径(layer.cornerRadius
)。
在 storyboard 上看不到效果,因为这些参数在运行时计算。现在,您可以在 UIView 中使用 Swift 类别(图片下方的代码),并使用 @IBInspectable
在 storyboard 中显示结果(如果您正在使用该类别,请仅使用 cornerRadius
而不是 layer.cornerRadius
作为键路径。
extension UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
}
这是来自Peter DeWeese的答案中提供的类别,它允许使用键路径layer.borderUIColor
来设置边框颜色。
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
Swift 3 如果您想在使用IBInspectable时在IB中查看结果,则必须扩展UIView并将属性添加到该类中,即:
@IBDesignable class MyView: UIView {}
extension MyView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth
}
set {
layer.borderWidth = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderColor: UIColor {
get {
return UIColor.init(cgColor: layer.borderColor!)
}
set {
layer.borderColor = newValue.cgColor
}
}
}
IBInspectable和IBDesignable是一些有用的工具,可以在Interface Builder中实时显示视图的外观。IBInspectable允许在IB中设置属性,而IBDesignable允许在代码中呈现可视化效果。这使得开发人员更容易调整和改进设计和用户体验。简短回答:
layer.cornerRadius = 10
layer.borderWidth = 1
layer.borderColor = UIColor.blue.cgColor
长答案:
customUIView.layer.cornerRadius = 10
pcustomUIView.layer.borderWidth = 1
customUIView.layer.borderColor = UIColor.blue.cgColor
self.addButton.layer.borderColor = [[UIColor greenColor] CGColor];
请注意:addButton
是一个 IBOutlet。
layer.borderWidth
才能显示边框。 - TotoroTotoro