Tom*_*las 25 objective-c storyboard uibutton ios swift
我不能在XCode 5中的按钮上设置边框而不直接在代码中设置它们.如果没有制作自定义背景图片,是否有可能在故事板上无法做到这一点?
Gui*_*tro 72
您可以使用密钥路径.
例如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
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是Peter DeWeese的答案,允许使用keypath 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
参考:http://nshipster.com/ibinspectable-ibdesignable/
归档时间: |
|
查看次数: |
41569 次 |
最近记录: |