文档章节

如何在xib或SB中可视化设置圆角等属性

自在不在
 自在不在
发布于 2016/10/11 15:20
字数 484
阅读 71
收藏 0

      以往倒圆角我都是通过代码进行:layer.cornerRadius
这种方式在进行xib开发并使用自动适配的时候,经常会出现不生效或错误生效的现象。原因是,自定适配下,- (instancetype)initWithCoder:(NSCoder *)coder 、-(instancetype)initWithFrame:(CGRect)frame等init方法触发时,控件的frame还未计算完毕,此时使用代码倒圆角就会发生问题。

    那么现在我们可以写UIView的分类,使所有控件都能在可视状态下修改UI属性。

    例:

@interface UIView (XibSetting)
// IBInspectable关键字会起到属性自动生成在可视界面的作用,之后你就可以像设置view背景颜色一样用鼠标去设置圆角颜色了,其他属性也是一个道理
//边框宽度
@property (nonatomic,assign)IBInspectable CGFloat borderWidth;

//可视化设置边框颜色
@property (nonatomic,strong)IBInspectable UIColor *borderColor;

//可视化设置圆角
@property (nonatomic,assign)IBInspectable CGFloat cornerRadius;

@end

@implementation UIView (GetXib)

- (void)setBorderWidth:(CGFloat)borderWidth{
    if(borderWidth <0) return;
    self.layer.borderWidth = borderWidth;
}

- (void)setBorderColor:(UIColor *)borderColor{
    
    self.layer.borderColor = borderColor.CGColor;
}

- (void)setCornerRadius:(CGFloat)cornerRadius{
    
    self.layer.cornerRadius = cornerRadius;
    self.layer.masksToBounds = cornerRadius >0;
}

@end

之后对应的xib文件会出现响应的属性设置项:

可以看到我们写的是UIView的扩展,如果我们写的是其他控件的分类,左上角标题会相应显示。

ps:支持的类型

UIColor BOOL NSNumber CGFloat NSString CGRect CGPoint CGSize UImage NSRange NSLocalizedString NSNull

© 著作权归作者所有

自在不在
粉丝 1
博文 24
码字总数 8518
作品 0
深圳
iOS工程师
私信 提问
IBInspectable / IBDesignable可视化控件编程讲解/使用/封装

前言: 在以前我们使用xib,SB,nib 设置一个view的圆角 边框需要通过一下界面非常的繁琐,所以一般情况下更倾向于使用代码来设置反而更加简单 在现在 IBInspectable 属性彻底的解决了这个问题...

冰泪_
2016/05/23
1K
0
设置图片圆角

常见是这么写的 或者在XIB SB中设置 但是 图层的剪辑会造成每一次页面有滑动、变化的时候 都要对图片重新绘制,导致页面异常卡顿。使用过量会有卡顿现象, 特别是弄圆角或者阴影会很卡, 如果设...

天使雨儿
2016/08/29
14
0
# ios AutoLayout 技术实践

前言 很久没用autolayout,一直用的masonry,再用autolayout,很生疏,写一篇文章,作为手记。 码字较多,确实令人不想看,希望看到的小伙伴认真读一下. Demo masonry 个人比较喜欢标哥关于m...

DaZenD
2018/11/17
0
0
vjieshao/StarEvaluateView

StarEvaluateView Swift版本星级评价控件,支持半星评价和设置间隙 系统支持: iOS7+,iPhone/iPad, Swift2.3/3.0 使用效果 如何使用StarEvaluateView 直接把StarEvaluateView.swift文件夹导入...

vjieshao
2017/03/11
0
0
Swift版本星级评价控件--StarEvaluateView

Swift版本星级评价控件,支持半星评价和设置间隙 系统支持: iOS7+,iPhone/iPad, Swift2.3/3.0 使用方法:直接把StarEvaluateView.swift文件夹导入到工程中,即可使用。根目录包含一个swift...

vjieshao
2017/03/11
271
1

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部