ios – 在界面生成器中设置UIButton图层边框宽度和颜色

我可以使用IB_DESIGNABLE和/或IBInspectable在Interface Builder中设置layer.borderWidth和layer.borderColor吗?我目前正在代码中创建我的按钮,但我想能够在IB中设置所有这些,但是我不知道这些属性是否可以在 Xcode 6中设置.我想将其设为IBOutlet而不是在代码中设置所有这些.这是我现在的按钮代码.
directions = [UIButton buttonWithType:UIButtonTypeRoundedRect];
directions.titleLabel.textAlignment = NSTextAlignmentCenter;
directions.titleLabel.font = [UIFont fontWithName:@"FranklinGothicStd-ExtraCond" size:20.0];
[directions setTitle:@"Directions" forState:UIControlStatenormal];
[directions setTitleColor:[UIColor whiteColor] forState:UIControlStatenormal];
directions.frame = CGRectMake(20,178,70,70);
directions.layer.borderWidth = 2.0f;
directions.layer.borderColor = [UIColor whiteColor].CGColor;
directions.clipsToBounds = YES;
directions.backgroundColor = [UIColor clearColor];
[directions addTarget:self action:@selector(getDirections:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:directions];

我按照建议设置这些值,边框从未在模拟器中显示.
编辑:我发现为什么在IB中设置这些值时边框没有出现.边框颜色是一个CGColor,所以我不得不在代码中设置它.

解决方法

实际上,您可以通过界面构建​​器设置视图层的某些属性.我知道我可以通过xcode设置一个图层的borderWidth和cornerRadius. borderColor不起作用,可能是因为该层想要一个CGColor而不是一个UIColor.

您可能需要使用字符串而不是数字,但它的作品!

但是您可以使用类别来代理属性,如layer.borderColor. (从ConventionalC可可宝)

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

结果将在运行时显而易见,而不是在Xcode中.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...