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

问题:

今天有一个页面有很多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圆角设置

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

React Native控件之ListView

概述 ListView作为核心组件之一,主要用于高效地显示一个可以垂直滚动的变化的数据列表。经过自定义组装,我们还可以用它实现九宫格等页面效果。 在Reac...

2697
来自专栏移动端开发

事件分发机制

前言总结:     iOS的事件可以大概分为三种类型,我们会对这三种类型分别做一些介绍说明,先总结一下:     1.  Milti-Touch Events ...

2188
来自专栏滕先生的博客

UIGestureRecognizer  手势识别一、概念介绍二、UIView 的分类三、UIGestureRecognizer 抽象类四、UIGestureRecognizerDelegate 代理

3558
来自专栏hightopo

基于HTML5 Canvas 实现弹出框

1943
来自专栏王磊的博客

fabric.js和高级画板

本文介绍fabric.js框架使用,以及使用fabricjs打造一个高级画板程序. 高级画板功能介绍 全局绘制颜色选择 护眼模式、网格模式切换 自由绘制 画箭头...

5889
来自专栏陈满iOS

iOS· UIGestureRecognizer 与UITouch 的 locationInView方法含义区别

UIGestureRecognizer 与UITouch 都有一个 locationInView: 方法。

871
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

React Native之React速学教程(中)

React Native之React速学教程(中) 本文出自《React Native学习笔记》系列文章。 React Native是基于React的,在开发R...

3078
来自专栏林德熙的博客

win10 uwp 简单MasterDetail UWP 导航List点击后退按钮页面更改大小修改显示修改我代码源码左右的列表和内容的相互操作

本文主要讲实现一个简单的界面,可以在窗口比较大显示列表和内容,窗口比较小时候显示列表或内容。也就是在窗口比较小的时候,点击列表会显示内容,点击返回会显示列表。

670
来自专栏ios 技术积累

iOS 根据UIView获取所在的UIViewController

本文将讲述在iOS开发中如何根据某个UIView来获取所属的UIViewController

2662
来自专栏程序员维他命

MJRefresh 源码解析

MJRefresh是李明杰老师的作品,到现在已经有1w+颗star了,是一个简单实用,功能强大的iOS下拉刷新(也支持上拉加载更多)控件。它的可定制性很高,几乎...

1272

扫码关注云+社区