xml地图|网站地图|网站标签 [设为首页] [加入收藏]

关于使用故事版与xib的一些干货,Storyboad动态刷

来源:http://www.ccidsi.com 作者:最新解决方案 人气:96 发布时间:2020-03-21
摘要:大家好像逐步地习于旧贯了“理想很丰满,现实很骨感”那样挨门逐户那样的转会那样常态,那么一旦是“现实很丰硕,理想很骨感”,大家能接纳吗?现实丰满能够,不过特出很骨感

大家好像逐步地习于旧贯了“理想很丰满,现实很骨感”那样挨门逐户那样的转会那样常态,那么一旦是“现实很丰硕,理想很骨感”,大家能接纳吗?现实丰满能够,不过特出很骨感那就无须将就了。就像薛之谦(Xue Zhiqian卡塔尔(قطر‎希望是能通过“母夜叉呀啊呀啊呀哎呀”来唱红的温馨,并不是上综合艺术做直男直到没对象的谐星来笑红自身却跟她的歌关系十分小。

一、前言

转业iOS开荒算是有三年多了,从一开首接受纯代码,再到逐步接触xib,再到新兴接纳传说版实行快速UI搭建。也博得了采取interface builder时很实用的一对干货,所以在这里共享给大家。

本篇小说首要介绍使用SB和Xib时亦可接纳的三个个宏:IB_DESIGNABLEIBInspectable。使用那几个宏,利用运营时机制,就能够把那些属性映射到XIB上了,同有的时候间大家UI类的自定义属性也得以映射上去。

iOS SDK详解之IBInspectable和IB_DESIGNABLE-Storyboad动态刷新

 


前言:
在做应用的UI设计的时候,假使属性能够在Interface Builder的图形化分界面进行安装,并且动态的预览到效果与利益,那样无疑会大大提升应用的开销效能。而XCode为大家提供了那样的一种办法,即是选拔IBInspectable和IB_DESIGNABLE
如图
图片 1


苹果支付中央银行使的XCode也宛如此的“现实丰满,理想骨感”例子,苹果公司在二零一二年就推出了UIStoryboard才能,到现行反革命一度6年了。苹果还不在xcode的Interface Builder上直接提供改良控件的圆角,边框设置,而是提供IBDesignable/IBInspectable那样的才具让那些再度轻松的行事由开拓者来落到实处圆角外框,最终category上选用IBDesignable/IBInspectable却不可能直接现实想要的结果。

二、踏向正题

User Defined Rumtime Attributes

因而User Defined Rumtime Attributes能够在Interface Builder中,设置某些KVC属性的值。举例
安装圆角为50
图片 2
那般,在运作模拟器,会宛如下效果
图片 3
不过,那样做有显然的缺欠

不便于调节和测量试验和早先时期维护


那边大家来体验一下薛之谦(Xue Zhiqian卡塔尔国的“人红歌不红”的“现实很丰盛,理想很骨感”感到。

IB_DESIGNABLE(OC) 、 IBDesignable(Swift)

IB_DESIGNABLE宏的功能正是让XCode动态渲染出该类图形化分界面;使用IB_DESIGNABLE的法门,把该宏加在自定义类的前头;

  • 自定义三个UIView ->XLLView
import UIKit
// 在定义类的前面加上IBDesignable宏
@IBDesignable
class XLLView: UIView {
    override func awakeFromNib() {
    }
}
  • 在main.storyboard中拖入四个UIView,并将其项目改为XLLView。
    当把品种改为XLLView之后,在有趣的事版的这么些地方,大家能看出如下音讯:
![](https://upload-images.jianshu.io/upload_images/5244645-7ae2adfdcd1a9491.jpg)

自定义View可以成功被刷新的信息

当您在遗闻版或xib自定义View的性质消息栏看见如上海教室中的Designables Up to date,恭喜您,那几个视图在interface builder中能够动态刷新了。

  • 利用keyPath设置圆角,可以成功动态刷新自定义视图,效果如下:

    图片 4

    纠正keyPath动态刷新视图

***注意:***当我们在xib或故事版中修改UIView为我们自定义的累的时候,还有可能出现下面的情况:  

![](https://upload-images.jianshu.io/upload_images/5244645-b7c252027c2e91fb.jpg)

设置动态刷新失败

相遇这种情状,不要慌。深吸一口气,然后大方的关闭Xcode,心里默念一句MMP,再重启Xcode,平时都能好。那么些interface builder动态渲染技术,在苹果这里应该还不是很成熟,现身bug也正是说正常。

IB_DESIGNABLE

IB_DESIGNABLE的宏的作用正是让XCode动态渲染出该类图形化界面。
运用办法,把该宏加在自定义类的前面

#import 
IB_DESIGNABLE
@interface IBDesigbableImageview : UIImageView
@end

接下来,再安装imageview为世襲类,何况安装圆角
图片 5
能够看出,storyboard上的imageview动态刷新了
图片 6


图片 7小说思维导图.png

IBInspectable

地方我们也询问了动态渲染宏IBDesignable的用法,通过keyPath我们能直观地收看作用。可是小友大家应当发掘了,利用keyPath也比较辛勤啊(苦逼的本身日常都以代码敲出来复制到下面去的)。接下来大家就足以经过IBInspectable来代替keyPath设置。

  • 在自定义类XLLView中定义贰特天性cornerRadius,并行使IBInspectable来修饰,实现其setter方法。
@IBDesignable
class XLLView: UIView {

    @IBInspectable var cornerRadius: CGFloat = 0.0 {
        didSet {
            layer.cornerRadius = cornerRadius
            layer.masksToBounds = true
        }
    }
}
  • 那个时候我们回过头来在看传说版,效果如下:
![](https://upload-images.jianshu.io/upload_images/5244645-6b5d847f77989056.jpg)

自定义属性可视化



自己自定义的属性就这么愉快地跑到了interface
builder的属性信息中,被可视化了。怀着激动地心情设置各种值,发现结合了**
IBDesignable**一样能够动态渲染图形。



![](https://upload-images.jianshu.io/upload_images/5244645-167e547afa2a2354.gif)

两个宏结合使用效果

IBInspectable

让帮助KVC的特性能够在Attribute Inspector中配置。
不熟悉KVC的童鞋可以看看作者那篇小说
ios SDK详解之KVC


增添属性以致Set方法就能够,假诺是现存类,使用Category

例如为imageView的世襲类设置cornerRadius
头文件加多属性

@property (nonatomic) IBInspectable CGFloat cornerRadius;

.m文件落到实处对应set的办法

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

如此那般,在Attribute Inspector就能够多出多少个配备选项
图片 8
因而设置那一个选项,就足以安装layer的圆角了。
历次设置圆角,都会在Identity Inspector中退换一个rumtime的KVC变量
图片 9
但是,今后仍然无法动态刷新


一.我们想要相当的粗略

在Storyboard中的怀有控件能经过Interface builder直接设置最主旨圆角,边框和边框颜色属性,表明美好的Storyboard能显示出小编要的渲染效果,并非编辑代码后只好在运维在手提式有线电话机或模拟器时才出现大家想要的功用。就如薛之谦先生想通唱歌红了和谐,老妪能解。

后语

地点演示的例子是用斯维夫特的编写制定的,OC的莫过于也同等,只是语法区别而已。现附上OC与斯威夫特测验代码,以供参谋。
interface builder相关宏在OC与Swift中测量检验调用德姆o

  • 参谋小说:
    此篇小说小编描述的可比康健,从Category分类和UIView的一对常用子类中各类测量试验调用了那八个宏,风乐趣的童鞋能够看一下。

通过IB_DESIGNABLE合作IBInspectable能够兑现动态刷新

福寿无疆方式相当轻易,正是在自定义类的头文件处加上那一个宏定义就可以。然后把相应的类设置为自定义的类。

.h文件

#import 
IB_DESIGNABLE
@interface IBDesigbableImageview : UIImageView
@property (nonatomic) IBInspectable CGFloat cornerRadius;
@end

.m文件

#import IBDesigbableImageview.h

@implementation IBDesigbableImageview

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

@end

意义就是最开头的德姆o


一旦不能够动态刷新,重启XCode,倘诺还不能够刷新,如下图RefreshingAllViews,提议开启Automatically Refresh Views
图片 10


 

SDK详解之IBInspectable和IB_DESIGNABLE-Storyboad动态刷新 前言: 在做应用的UI设计的时候,借使属质量够在Interface Builder的图形化分界面实行设置...

二.基本概念

  1. IB_DESIGNABLE的宏的功效正是让XCode动态渲染出该类图形化分界面。UIView 或 NSView使用IB_DESIGNABLE宏申明时候,正是让Interface Builder知道它应当在UIStoryboard也许Xib中画布上直接渲染视图,没有要求等到编写翻译运维后就能够事情发生前展现出来效果 。
  1. IBInspectable修饰属性,能够是客商自定义的运作时属性,让支持KVC的天性能够在Attribute Inspector中配备。

三.行使方法

1.IB_DESIGNABLE放在@interface或然@implement都能够,注脚这一个类在XCode直接看见渲染的成效。
IB_DESIGNABLE@interface IBDesignableImageView : UIImageView
2.IBInspectable 修饰属性,使属品质在XCode中直接设置。**
@property(nonatomic,assign) IBInspectable CGFloat cornerRadius;

四 .普通类世襲关系达成渲染效果

听大人讲第三所列出的2个关键点,详细具体落到实处:

本文由68399皇家赌场发布于最新解决方案,转载请注明出处:关于使用故事版与xib的一些干货,Storyboad动态刷

关键词: 68399皇家赌场 日记本 不完美 效果 IBDesignable

上一篇:皇家赌场深浅拷贝与strong,浅拷贝与copy

下一篇:没有了

最火资讯