博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS IB_DESIGNABLE 和 IBInspectable 用法简介
阅读量:5749 次
发布时间:2019-06-18

本文共 1183 字,大约阅读时间需要 3 分钟。

场景

在开发中,经常会遇到设置 UIView 或者 UIImageView 等控件圆角的情况,在 xib 和 storyboard 里面,我们一般使用 Runtime Attributes 的方式,通过 layer.cornerRadiuslayer.masksToBounds 设置圆角半径和边缘裁剪。如下图

虽然运行起来能够实现,但是我们并不能在 xib 马上看到效果,要能实时在 Xcode 显示界面效果,就需要用到 IB_DESIGNABLEIBInspectable 特性了。

用法

Xcode 6 开始,苹果就提供了 IB_DESIGNABLEIBInspectable 特性,用法如下表

特性 用途 OC 使用 swift 使用
IB_DESIGNABLE 动态渲染该类图形化界面 IB_DESIGNABLE 写在 @interface @IBDesignable 写在 class 前
IBInspectable 可视化编辑该类的属性 IBInspectable 写在属性类型前 @IBInspectable 写在变量前

直接上代码。创建一个UIView子类,加上 IB_DESIGNABLE 特性

#import 
IB_DESIGNABLE@interface LCBaseView : UIView@end复制代码

这时候已经能在设计器直接看到效果了(不要忘了设置 CustomClass

然后再试试 IBInspectable,给 View 加一个 cornerRadius 属性用来设置圆角半径

#import 
IB_DESIGNABLE@interface LCBaseView : UIView/** 圆角半径 */@property (nonatomic, assign) IBInspectable CGFloat cornerRadius;@end复制代码

然后在 .m 文件中重写 set 方法设置圆角

#import "LCBaseView.h"@implementation LCBaseView- (void)setCornerRadius:(CGFloat)cornerRadius {    self.layer.cornerRadius = cornerRadius;    self.layer.masksToBounds = YES;}@end复制代码

回到设计器,会发现刚刚我们自定义的属性神奇的出现在了面板上。把之前设置的 Runtime Attributes 属性全部删了,在这里设置一个100,已经实现了我们想要的效果。

转载于:https://juejin.im/post/5a31cb5ff265da432840dcc8

你可能感兴趣的文章
一个自动布署.net网站的bat批处理实例
查看>>
tomcat 安装
查看>>
AIX:物理卷及有关概念
查看>>
Install and Configure OpenStack Object Storage (Swift) for Ubuntu 14.04
查看>>
我的友情链接
查看>>
Centos6.6安装选包及基础场景说明
查看>>
《从零开始学Swift》学习笔记(Day 61)——Core Foundation框架之内存管理
查看>>
java基础面试题-1
查看>>
深克隆与序列化效率的比较
查看>>
C++入门篇01
查看>>
3.python开发语言的特点
查看>>
Nginx使用Proxy_cache实现服务器端静态文件缓存
查看>>
lamp+nginx代理+discuz+wordpress+phpmyadmin搭建一
查看>>
nagios监控使用139邮箱报警
查看>>
Windows Phone 7 中各种Task解说(启动器与选择器)
查看>>
ArcGIS网络分析之Silverlight客户端最近设施点分析(四)
查看>>
罗森伯格助力2011年中国智能建筑技术发展应用论坛哈尔滨站
查看>>
网络割接
查看>>
mysql主从复制及失败切换
查看>>
windows server 2016 活动目录(二)
查看>>