Xcode 4 Transition Guide
Apple is aiming for Xcode 4 to be the primary iOS development environment and, as a result, many will need to transition from Xcode 3.2 to Xcode 4. This guide has been put together in order to help you migrate your apps to Xcode 4 successfully.
What you need to do
For existing projects
If you want to start using Xcode 4 with an existing project made using Xcode 3.2.#, all you need to do to update your project is run ttmodule again like so:
1 2 3 |
> python three20/src/scripts/ttmodule.py -p path/to/your/project/project.xcodeproj Three20 --xcode-version=4 |
python脚本执行完毕后,就应该环境就搭建完毕了 ,快快打开工程检查一下,如下图所示,安装成功后打开工程后在Frameworks中会出现很多Three20的相关的东西。 如果到这一步还是没有出现这些Frameworks文件,那么请仔细阅读上面的博文检查一下自己的步骤。
到这一步就彻底安装成功了,下面开始构建我们第一个项目HelloWorld。
1 2 3 4 5 6 7 8 9 10 11 |
#import <UIKit/UIKit.h> int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, @"Three20AppDelegate"); [pool release]; return retVal; } |
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 |
#import "Three20AppDelegate.h" #import "MyViewController.h" @implementation Three20AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //创建导航条 TTNavigator* navigator = [TTNavigator navigator]; navigator.persistenceMode = TTNavigatorPersistenceModeAll; navigator.window = [[[UIWindow alloc] initWithFrame:TTScreenBounds()] autorelease]; //TTURLMap 非常重要的一个属性 //界面的点击切换完全取决与它的设定 TTURLMap* map = navigator.URLMap; //如果须要访问wab页面的话 就必需添加 [map from:@"*" toViewController:[TTWebController class]]; //拼一个url 意思是如果访问 "tt://MyView" 会进入 MyViewController class [map from:@"tt://MyView" toSharedViewController:[MyViewController class]]; if (![navigator restoreViewControllers]) { //打开上面设置的url [navigator openURLAction:[TTURLAction actionWithURLPath:@"tt://MyView"]]; } return YES; } - (void)dealloc { [super dealloc]; } @end |
由于在程序入口中就将URL 指向这里 ,所以在这里添加显示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 |
#import "MyViewController.h" #import <Three20Style/UIColorAdditions.h> @implementation MyViewController - (void)loadView { [super loadView]; //创建一个可滑动的view UIScrollView* scrollView = [[[UIScrollView alloc] initWithFrame:TTNavigationFrame()] autorelease]; scrollView.autoresizesSubviews = YES; scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth ¦ UIViewAutoresizingFlexibleHeight; //背景颜色 scrollView.backgroundColor = [UIColor whiteColor]; self.view = scrollView; //标题内容 self.title = @"雨松MOMO程序开发" ; //设置雨松MOMO头像图片 CGRect frame = CGRectMake(100, 10, 120, 120); TTImageView *imageView = [[TTImageView alloc] initWithFrame:frame]; UIImage *image = [UIImage imageNamed:@"1.jpg"]; imageView.defaultImage = image; [scrollView addSubview:imageView]; //view风格 边框 颜色 UIColor* black = RGBCOLOR(158, 163, 172); //view风格 TTStyle* style = [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]]; frame = CGRectMake(5, 150, 310, 150); //新建一个TTView 将设置的风格赋值给它 TTView *view = [[[TTView alloc] initWithFrame:frame] autorelease]; //背景颜色 view.backgroundColor = [UIColor whiteColor]; //赋值风格 view.style = style; //显示字符串 支持html语言 NSString * text = @"爱加班,爱代码,爱HelloWorld , 爱学习,爱钻研,爱学无止境 爱玩游戏更爱做游戏,我是雨松MOMO,哇咔咔~ 我在参加2011年博客大赛 <a href=\"http://www.xuanyusong.com\">点击为MOMO投上宝贵的一票</a>"; frame = CGRectMake(10, 10, 290, 150); //TTStyledTextLabel 很给力啊这个 哈哈! TTStyledTextLabel* label = [[[TTStyledTextLabel alloc] initWithFrame:frame] autorelease]; label.font = [UIFont systemFontOfSize:17]; label.textColor = [UIColor redColor]; label.text = [TTStyledText textFromXHTML:text lineBreaks:YES URLs:YES]; label.contentInset = UIEdgeInsetsMake(5, 5, 5, 5); [label sizeToFit]; //将label添加入自定义view [view addSubview:label]; //将自动一定view 显示在主view中! [scrollView addSubview:view]; } @end |
到这一步,这个简单的HelloWorld程序就写完了,我们发现以前我们用到的高级界面的类基本上Three20都写了新的方法去继承,实现更佳好的效果,将麻烦的地方由引擎自身帮我们完成。看一下效果图。我添加特殊的风格View 显示text 支持html语言 可以在程序中随意添加网页链接、
下面MOMO在贴一段官方提供的Demo中的一段代码,主要是用来设置View风格. 官方一共提供了19种view风格,代码中使用循环将这19中view 依次显示在界面中,绝对够我们开发IOS应用程序啦 哈哈~~所以说官方提供的DEMO 大家一定要好好阅读喔 哇咔咔~~
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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
- (void)loadView { UIScrollView* scrollView = [[[UIScrollView alloc] initWithFrame:TTNavigationFrame()] autorelease]; scrollView.autoresizesSubviews = YES; scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth ¦ UIViewAutoresizingFlexibleHeight; scrollView.backgroundColor = RGBCOLOR(216, 221, 231); self.view = scrollView; UIColor* black = RGBCOLOR(158, 163, 172); UIColor* blue = RGBCOLOR(191, 197, 208); UIColor* darkBlue = RGBCOLOR(109, 132, 162); NSArray* styles = [NSArray arrayWithObjects: // Rectangle [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]], // Rounded rectangle [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]], // Gradient border [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTLinearGradientBorderStyle styleWithColor1:RGBCOLOR(0, 0, 0) color2:RGBCOLOR(216, 221, 231) width:2 next:nil]]], // Rounded left arrow [TTShapeStyle styleWithShape:[TTRoundedLeftArrowShape shapeWithRadius:5] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]], // Partially rounded rectangle [TTShapeStyle styleWithShape: [TTRoundedRectangleShape shapeWithTopLeft:0 topRight:0 bottomRight:10 bottomLeft:10] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]], // SpeechBubble with pointer left of the centre on the top edge // Locations for top edge are 45 on the left, 90 in the centre, 134.999 on the right [TTShapeStyle styleWithShape:[TTSpeechBubbleShape shapeWithRadius:5 pointLocation:60 pointAngle:90 pointSize:CGSizeMake(20,10)] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]], // SpeechBubble with pointer on the extreme left on the bottom edge // Locations for bottom edge are 225 on the left, 270 in the centre, 314.999 on the left [TTShapeStyle styleWithShape:[TTSpeechBubbleShape shapeWithRadius:5 pointLocation:314 pointAngle:270 pointSize:CGSizeMake(20,10)] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]], // SpeechBubble with pointer on the bottom of the left edge // Locations for left edge are 315 on the bottom, 0 in the centre, 44.999 on top [TTShapeStyle styleWithShape:[TTSpeechBubbleShape shapeWithRadius:5 pointLocation:315 pointAngle:0 pointSize:CGSizeMake(10,20)] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]], // SpeechBubble with pointer on the centre of the left edge // Locations for left edge are 315 on the bottom, 0 in the centre, 44.999 on top [TTShapeStyle styleWithShape:[TTSpeechBubbleShape shapeWithRadius:5 pointLocation:0 pointAngle:0 pointSize:CGSizeMake(20,10)] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]], // SpeechBubble with pointer on the bottom of the right hand edge // Locations for right edge are 135 on top, 180 in the middle, 314.999 on the bottom [TTShapeStyle styleWithShape:[TTSpeechBubbleShape shapeWithRadius:5 pointLocation:224 pointAngle:180 pointSize:CGSizeMake(15,15)] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]], // Drop shadow [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next: [TTShadowStyle styleWithColor:RGBACOLOR(0,0,0,0.5) blur:5 offset:CGSizeMake(2, 2) next: [TTInsetStyle styleWithInset:UIEdgeInsetsMake(0.25, 0.25, 0.25, 0.25) next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTInsetStyle styleWithInset:UIEdgeInsetsMake(-0.25, -0.25, -0.25, -0.25) next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]]]]], // Inner shadow [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next: [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next: [TTInnerShadowStyle styleWithColor:RGBACOLOR(0,0,0,0.5) blur:6 offset:CGSizeMake(1, 1) next: [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]]], // Chiseled button [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next: [TTShadowStyle styleWithColor:RGBACOLOR(255,255,255,0.9) blur:1 offset:CGSizeMake(0, 1) next: [TTLinearGradientFillStyle styleWithColor1:RGBCOLOR(255, 255, 255) color2:RGBCOLOR(216, 221, 231) next: [TTSolidBorderStyle styleWithColor:blue width:1 next:nil]]]], // Embossed button [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next: [TTLinearGradientFillStyle styleWithColor1:RGBCOLOR(255, 255, 255) color2:RGBCOLOR(216, 221, 231) next: [TTFourBorderStyle styleWithTop:blue right:black bottom:black left:blue width:1 next:nil]]], // Toolbar button [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:4.5] next: [TTShadowStyle styleWithColor:RGBCOLOR(255,255,255) blur:1 offset:CGSizeMake(0, 1) next: [TTReflectiveFillStyle styleWithColor:darkBlue next: [TTBevelBorderStyle styleWithHighlight:[darkBlue shadow] shadow:[darkBlue multiplyHue:1 saturation:0.5 value:0.5] width:1 lightSource:270 next: [TTInsetStyle styleWithInset:UIEdgeInsetsMake(0, -1, 0, -1) next: [TTBevelBorderStyle styleWithHighlight:nil shadow:RGBACOLOR(0,0,0,0.15) width:1 lightSource:270 next:nil]]]]]], // Back button [TTShapeStyle styleWithShape:[TTRoundedLeftArrowShape shapeWithRadius:4.5] next: [TTShadowStyle styleWithColor:RGBCOLOR(255,255,255) blur:1 offset:CGSizeMake(0, 1) next: [TTReflectiveFillStyle styleWithColor:darkBlue next: [TTBevelBorderStyle styleWithHighlight:[darkBlue shadow] shadow:[darkBlue multiplyHue:1 saturation:0.5 value:0.5] width:1 lightSource:270 next: [TTInsetStyle styleWithInset:UIEdgeInsetsMake(0, -1, 0, -1) next: [TTBevelBorderStyle styleWithHighlight:nil shadow:RGBACOLOR(0,0,0,0.15) width:1 lightSource:270 next:nil]]]]]], // Badge [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:TT_ROUNDED] next: [TTInsetStyle styleWithInset:UIEdgeInsetsMake(1.5, 1.5, 1.5, 1.5) next: [TTShadowStyle styleWithColor:RGBACOLOR(0,0,0,0.8) blur:3 offset:CGSizeMake(0, 5) next: [TTReflectiveFillStyle styleWithColor:[UIColor redColor] next: [TTInsetStyle styleWithInset:UIEdgeInsetsMake(-1.5, -1.5, -1.5, -1.5) next: [TTSolidBorderStyle styleWithColor:[UIColor whiteColor] width:3 next:nil]]]]]], // Mask [TTMaskStyle styleWithMask:TTIMAGE(@"bundle://mask.png") next: [TTLinearGradientFillStyle styleWithColor1:RGBCOLOR(0, 180, 231) color2:RGBCOLOR(0, 0, 255) next:nil]], // simple bottom only border [TTShapeStyle styleWithShape:[TTRectangleShape shape] next: [TTSolidFillStyle styleWithColor:RGBCOLOR(255, 255, 255) next: [TTFourBorderStyle styleWithTop:nil right:nil bottom:black left:nil width:5 next:nil]]], nil]; CGFloat padding = 10.0f; CGFloat viewWidth = scrollView.width/2 - padding*2; CGFloat viewHeight = TT_ROW_HEIGHT; CGFloat x = padding; CGFloat y = padding; for (TTStyle* style in styles) { if (x + viewWidth >= scrollView.width) { x = padding; y += viewHeight + padding; } CGRect frame = CGRectMake(x, y, viewWidth, viewHeight); TTView* view = [[[TTView alloc] initWithFrame:frame] autorelease]; view.backgroundColor = scrollView.backgroundColor; view.style = style; [scrollView addSubview:view]; x += frame.size.width + padding; } scrollView.contentSize = CGSizeMake(scrollView.width, y + viewHeight + padding); } |
- 本文固定链接: https://www.xuanyusong.com/archives/616
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
哈哈~~~不错啊~~~我刚学习IOS不久~~~最近也在学习320~~~先看看你的博文再去看DEMO~~看博文比看demo舒服多了
谢谢啊 ,不过现在320已经没落了。。。
那么现在有什么比320更好的开源框架了吗?
我也很久没做过 IOS应用开发了。也不太清楚, 你可以去网上查查吧。。
“官方提供的Demo中的一段代码”中156行开始的 scrollView.width 是不是错啦?应该是scrollView.frame.size.width 吧?
请问,听说320不是有privateAPI吗? 可以上appStore吗?
没问题,很多APP都上 app store了。。
学习了。