版本記錄
| 版本號(hào) | 時(shí)間 |
|---|---|
| V1.0 | 2018.04.17 |
前言
iOS中的視圖加載可以有兩種方式,一種是通過(guò)xib加載,另外一種就是通過(guò)純代碼加載。它們各有優(yōu)點(diǎn)和好處,xib比較直觀簡(jiǎn)單,代碼比較靈活但是看著很多很亂,上一家公司主要風(fēng)格就是用純代碼,這一家用的就是xib用的比較多。這幾篇我們就詳細(xì)的介紹一個(gè)xib相關(guān)知識(shí)。感興趣的可以看上面寫(xiě)的幾篇。
1. xib相關(guān)(一) —— 基本知識(shí)(一)
2. xib相關(guān)(二) —— 文件沖突問(wèn)題(一)
3. xib相關(guān)(三) —— xib右側(cè)標(biāo)簽介紹(一)
4. xib相關(guān)(四) —— 連線問(wèn)題(一)
5. xib相關(guān)(五) —— 利用layout進(jìn)行約束之界面(一)
6. xib相關(guān)(六) —— 利用layout進(jìn)行約束之說(shuō)明和注意事項(xiàng)(二)
7. xib相關(guān)(七) —— Storyboard中的segue (一)
8. xib相關(guān)(八) —— Size Classes(一)
IBOutlet
這個(gè)是我們拖動(dòng)屬性的修飾符,用來(lái)標(biāo)識(shí)該屬性來(lái)自xib。

@property (weak, nonatomic) IBOutlet UIView *tipView;
IBAction
這個(gè)是我們拖動(dòng)方法的修飾符,用來(lái)標(biāo)識(shí)該屬性來(lái)自xib。

- (IBAction)buttonDidClick:(UIButton *)sender
{
}
IBInspectable
在OC中的IBInspectable,它修飾的屬性或者實(shí)例變量,會(huì)顯示在xib中的屬性欄中(Show the Attributes inspector),IBInspectable是可以用代碼影響xib的。

下面我們看一下ViewController關(guān)聯(lián)的SB,可以看見(jiàn),這個(gè)屬性也在xib上有所體現(xiàn)。

可見(jiàn),這個(gè)屬性已經(jīng)在xib有所體現(xiàn)了。
IB_DESIGNABLE
在OC中將IB_DESIGNABLE寫(xiě)在@implementation前,在swift中將@IBDesignable寫(xiě)在class前。它的作用是可以在不運(yùn)行的情況下把你的代碼顯示在xib或SB文件中。
還有二點(diǎn)說(shuō)明:
這是一個(gè)針對(duì)UI顯示的功能,所以只能是在
UIView及其子類(lèi)或者NSView及其子類(lèi)上生效。要想使
IB_DESIGNABLE起作用必須把代碼寫(xiě)在drawRect里才能顯示,同樣的代碼,寫(xiě)在了awakeFromNib里就不會(huì)再xib中看出效果,只有寫(xiě)在了drawRect才可以。
看一下下面這個(gè)例子。

在Main.storyboard中放一個(gè)UIView,接著綁定類(lèi)。

在JJCustomView中,加入下面代碼
IB_DESIGNABLE @implementation JJCustomView
- (void)drawRect:(CGRect)rect
{
UIBezierPath *firtPath =
[UIBezierPath bezierPathWithOvalInRect:CGRectMake(10, 10, 180, 180)];
CAShapeLayer *shapeL = [CAShapeLayer layer];
shapeL.lineWidth = 20;
shapeL.path = firtPath.CGPath;
shapeL.strokeStart = 0;
shapeL.strokeEnd = 1;
shapeL.strokeColor = [UIColor redColor].CGColor;
shapeL.fillColor = [UIColor clearColor].CGColor;
[self.layer addSublayer:shapeL];
self.layer.cornerRadius = 30;
self.layer.masksToBounds = YES;
}
下面我們?cè)诳匆幌?code>Main.storyboard中的變化。

IBOutletCollection
首先放四個(gè)按鈕

將基于IBOutlet創(chuàng)建的對(duì)象放在一個(gè)NSarray里,里面放的是用IBOutlet創(chuàng)建的UIView。

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *button;
這樣四個(gè)按鈕就都鏈接到這個(gè)集合數(shù)組上了。

下面看一下打印輸出的地方
- (void)awakeFromNib
{
[super awakeFromNib];
NSLog(@"self.button = %@", self.button);
}
下面看打印輸出結(jié)果
2018-04-17 23:45:00.592962+0800 JJWebImage[1673:98680] self.button = (
"<UIButton: 0x7feb2550eea0; frame = (118 464; 46 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x60000003ba80>>",
"<UIButton: 0x7feb2550f8f0; frame = (118 371; 46 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x60000003c400>>",
"<UIButton: 0x7feb2550f2b0; frame = (118 280; 46 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x60000003ba60>>",
"<UIButton: 0x7feb2550f5d0; frame = (118 555; 46 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x60000003c280>>"
)
后記
本篇主要介紹了幾個(gè)IB修飾符,感興趣的給個(gè)贊或者關(guān)注~~~~
