轉自:http://www.yifeiyang.net/iphone-development-techniques-of-the-tools-for-chapter-1-the-xib-file-is-converted-to-objective-c-source-code/
nib2objc 是一個小巧的轉換工具,可以將 XIB 檔案自動轉換為 Objective-C 的原始碼檔案。
通常,考慮到程式的效率時,才將XIB直接轉換為原始碼檔案。但是這樣一來,通過Interface Builder設定的執行個體變數與行為方法的接續也沒有了,需要從新手寫。但是,該工具的原始碼是公開的,稍加修飾,就能完成大部分工作。
使用的時候,首先下載的工程代碼並用XCode編譯一下,會產生一個命令列程式檔案 nib2objc。然後如下所示執行轉換:
$ nib2objc WebView.xib > WebView.m
像是上面view轉換後會輸出以下代碼:
UIBarButtonItem *view39 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];view39.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view39.enabled = YES;view39.style = UIBarButtonItemStylePlain;view39.tag = 0;view39.width = 0.000;UIBarButtonItem *view64 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:nil];view64.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view64.enabled = YES;view64.style = UIBarButtonItemStylePlain;view64.tag = 0;view64.width = 0.000;UIBarButtonItem *view57 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];view57.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view57.enabled = YES;view57.style = UIBarButtonItemStylePlain;view57.tag = 0;view57.width = 0.000;UIBarButtonItem *view33 = [[UIBarButtonItem alloc] initWithTitle:(null) style:UIBarButtonItemStylePlain target:nil action:nil];view33.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view33.enabled = YES;view33.image = nil;view33.style = UIBarButtonItemStylePlain;view33.tag = 0;view33.width = 0.000;UIBarButtonItem *view66 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];view66.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view66.enabled = YES;view66.style = UIBarButtonItemStylePlain;view66.tag = 0;view66.width = 0.000;UIWebView *view31 = [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 460.0)];view31.frame = CGRectMake(0.0, 0.0, 320.0, 460.0);view31.alpha = 1.000;view31.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;view31.backgroundColor = [UIColor colorWithWhite:1.000 alpha:1.000];view31.clearsContextBeforeDrawing = YES;view31.clipsToBounds = YES;view31.contentMode = UIViewContentModeScaleToFill;view31.detectsPhoneNumbers = NO;view31.hidden = NO;view31.multipleTouchEnabled = YES;view31.opaque = YES;view31.scalesPageToFit = YES;view31.tag = 0;view31.userInteractionEnabled = YES;UIBarButtonItem *view56 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:nil action:nil];view56.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view56.enabled = YES;view56.style = UIBarButtonItemStylePlain;view56.tag = 0;view56.width = 0.000;UIBarButtonItem *view48 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];view48.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view48.enabled = YES;view48.style = UIBarButtonItemStylePlain;view48.tag = 0;view48.width = 0.000;UIToolbar *view32 = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0, 416.0, 320.0, 44.0)];view32.frame = CGRectMake(0.0, 416.0, 320.0, 44.0);view32.alpha = 1.000;view32.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;view32.barStyle = UIBarStyleBlackTranslucent;view32.clearsContextBeforeDrawing = NO;view32.clipsToBounds = NO;view32.contentMode = UIViewContentModeScaleToFill;view32.hidden = NO;view32.multipleTouchEnabled = NO;view32.opaque = NO;view32.tag = 0;view32.userInteractionEnabled = YES;UIBarButtonItem *view34 = [[UIBarButtonItem alloc] initWithTitle:(null) style:UIBarButtonItemStylePlain target:nil action:nil];view34.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view34.enabled = YES;view34.image = nil;view34.style = UIBarButtonItemStylePlain;view34.tag = 0;view34.width = 0.000;UIBarButtonItem *view36 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];view36.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view36.enabled = YES;view36.style = UIBarButtonItemStylePlain;view36.tag = 0;view36.width = 0.000;UIView *view27 = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 460.0)];view27.frame = CGRectMake(0.0, 0.0, 320.0, 460.0);view27.alpha = 1.000;view27.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin;view27.backgroundColor = [UIColor colorWithWhite:1.000 alpha:1.000];view27.clearsContextBeforeDrawing = NO;view27.clipsToBounds = NO;view27.contentMode = UIViewContentModeScaleToFill;view27.hidden = NO;view27.multipleTouchEnabled = NO;view27.opaque = YES;view27.tag = 0;view27.userInteractionEnabled = YES;UIBarButtonItem *view38 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];view38.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view38.enabled = YES;view38.style = UIBarButtonItemStylePlain;view38.tag = 0;view38.width = 0.000;UIBarButtonItem *view35 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:nil action:nil];view35.frame = CGRectMake(0.0, 0.0, 0.0, 0.0);view35.enabled = YES;view35.style = UIBarButtonItemStylePlain;view35.tag = 0;view35.width = 0.000;[view27 addSubview:view31];[view32 addSubview:view33];[view32 addSubview:view34];[view32 addSubview:view36];[view32 addSubview:view38];[view32 addSubview:view39];[view32 addSubview:view48];[view32 addSubview:view57];[view32 addSubview:view35];[view32 addSubview:view56];[view32 addSubview:view64];[view32 addSubview:view66];[view27 addSubview:view32];