前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Xib、Nib、Storyboard下修改控件边框颜色、大小、圆角

Xib、Nib、Storyboard下修改控件边框颜色、大小、圆角

作者头像
傅_hc
发布2018-06-28 17:10:36
2.1K0
发布2018-06-28 17:10:36
举报
文章被收录于专栏:iOS开发随笔iOS开发随笔

问题:

今天有一个页面有很多uibutton,所以就用xib搭了界面,然后问题来了,如何在xib下修改控件的边框颜色和大小、圆角?我之前知道利用IB面板下的“UserDefined Runtime Attributes”(如下图),然后问题来了,设置圆角可以成功设置,但是设置uibutton的边框颜色不行。然后一直百度找到的方法都是跟我的做法一样,而且不行,然后想到我可以Google,好吧,第一条就出来答案了····

IB 下UserDefined Runtime Attributes 面板

原因:

找到原因在于borderColor接受的参数是CGColor类型,而此处的Color为UIColor,所以导致注入时参数类型不一致

解决方法:

自定义一个CALayer类别,然后使用这个属性

//CALayer+RumtimeAttribute.h

#import

@interfaceCALayer (RumtimeAttribute)

@property(nonatomic,assign)UIColor* borderIBColor;

@end

//CALayer+RumtimeAttribute.m

#import"CALayer+RumtimeAttribute.h"

@implementationCALayer (RumtimeAttribute)

- (void)setBorderIBColor:(UIColor*)borderIBColor

{

self.borderColor= borderIBColor.CGColor;

}

- (UIColor*)borderIBColor

{

return[UIColor colorWithCGColor:self.borderColor];

}

@end

自定义的时候要注意borderIBColor属性的setter和getter方法的内容不要错了,然后可以完美运行

扩展:在swift 2.0可以用一下方法(我没有试)

import Foundation

extension CALayer{

//解决IB中runtime attribute中layer.borderColor不能转换UIColor为CGColor

var borderColorFromUIColor:UIColor{

set(color){

self.borderColor = color.CGColor;

}

get{

returnUIColor(CGColor:self.borderColor)

}

}

}

最后感谢大神们:Is it possible to set UIView border properties from interface builder? Expanding User-Defined Runtime Attributes in Xcode with Objective-C

这里有比较有意思的扩展哦,有兴趣的可以看看  Xcode6快捷键、小技巧与xib圆角设置

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015.12.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题:
  • 原因:
  • 解决方法:
  • 扩展:在swift 2.0可以用一下方法(我没有试)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档