【发布时间】:2013-12-26 23:55:57
【问题描述】:
如果不直接在代码中设置它们,我无法在 Xcode 5 中为我的按钮设置边框。如果不制作自定义背景图像,是否有可能无法在情节提要上执行此操作?
【问题讨论】:
标签: ios objective-c swift uibutton storyboard
如果不直接在代码中设置它们,我无法在 Xcode 5 中为我的按钮设置边框。如果不制作自定义背景图像,是否有可能无法在情节提要上执行此操作?
【问题讨论】:
标签: ios objective-c swift uibutton storyboard
您可以使用密钥路径。
例如图片上描述的圆角半径 (layer.cornerRadius)。
您将无法在故事板上看到效果,因为此参数是在运行时评估的。 现在您可以在 UIView 中使用 swift 类别(图片下方的代码)与@IBInspectable 一起显示故事板上的结果(如果您使用类别,请仅使用 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
【讨论】:
layer.borderWidth 才能显示边框。
斯威夫特 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
}
}
}
【讨论】:
简答:
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。
【讨论】: