在xib中,可以根据用户定义运行时属性,设置key path来修改。但是有一个很麻烦的事情,每个对象都要分别设置key path,选择类型,设置value。
那么下面介绍一下如何将你想要设置的下图中的内容
xib或者storyboard中原来的样子如何变成下图中的内容
通过写代码变成这个样子,是不是就很简单了通过自定义的image view 我们就可以直接输入值即可.
在代码中,关键的内容便是IB_DESIGNABLE IBInspectable(在Swift中是@IBInspectable @IBDesignable)。下面是在苹果文档中对两个关键字的解释
When you add the IB_DESIGNABLEattribute to the class declaration, class extension, or category for a custom view, Interface Builder renders your custom view on the canvas. When you make changes to your code, Interface Builder rebuilds your custom view and rerenders your custom view.
(当你在类的声明,类扩展,类别,IB会将你的自定义视图直接在画布上显示出来。)
By using the IBInspectable attribute to declare variables as inspectable properties, you allow Interface Builder to quickly rerender your custom view as you change the values of these properties in the Attributes inspector. You can attach the IBInspectable attribute to any property in a class declaration, class extension, or category for any type that’s supported by the Interface Builder defined runtime attributes: boolean, integer or floating point number, string, localized string, rectangle, point, size, color, range, and nil.
当你使用IBInspectable属性去声明变量,可以让IB很快地将你做出的属性改变显示在自定义view上。IBInspectable只能添加到Interface Builder defined runtime attributes支持的boolean, integer or floating point number, string, localized string, rectangle, point, size, color, range, and nil类型中。
头文件内容 .m文件中的内容 如果代码中有IB_DESIGNABLE便会显示@ IBDesignable 让 Interface Builder 知道它应该在画布上直接渲染视图。你会看到你的自定义视图在每次更改后不必编译并运行你的应用程序就会显示。
在此处以及上图中的runtime属性都会出现在上面的例子中,增加了自定义的defineColor。说明自定义的参数也可以,只要是IBInspectable来修饰这个属性即可。
如果想随意有效添加,需注意一下问题:
1.需要在set该属性中填写本来想要赋值的内容
2.通过实验都可以生效,但是有一个现象,如果修改的是defineColor自定义的参数,再去修改borderColor系统的值,便是无效的。这是为什么呢?有谁知道可以帮我解答下。
参考文档
http://www.cocoachina.com/ios/20150227/11202.html
https://developer.apple.com/library/ios/recipes/xcode_help-IB_objects_media/Chapters/CreatingaLiveViewofaCustomObject.html#//apple_ref/doc/uid/TP40014224-CH41-SW1
最后,推荐一个我自己的产品,找到我啦,可查看轨迹和定位,欢迎关注我的微信公众号,时刻关注找到我啦的更新
网友评论