nib2objc是一个小巧的转换工具,可以将XIB文件自动转换为Objective-C的源代码文件。
通常,考虑到程序的效率时,才将XIB直接转换为源代码文件。但是这样一来,通过Interface Builder设定的实例变量与行为方法的接续也没有了,需要从新手写。但是,该工具的源代码是公开的,稍加修饰,就能完成大部分工作。
使用的时候,首先下载的工程代码并用XCode编译一下,会生成一个命令行程序文件 nib2objc。然后如下所示执行转换:
1 | $ nib2objc WebView.xib > WebView.m |
像是上面view转换后会输出以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | 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]; |