1:原文摘自:http://blog.csdn.net/xys289187120/article/details/7017432

雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/7017432




亲爱的朋友们,如果你现在在做IOS 软件开发,不妨来看看Three20这套框架。如果你对它还比较陌生?MOMO在这里告诉你它绝对是一个IOS 软件开发的利器,有了它绝对让你的软件事半功倍。three20框架的前身是facebook  iPhone 客户端。 后来facebook将其开源了,就有了three20这个框架。据说开发这套引擎的这个程序大牛 facebook为了挖他直接把他所在的公司买下来了,我心里就琢磨这人也太牛了吧。做了一个客户端 开源后直接就变成流行引擎了。真的是让我辈望尘莫及啊~~ 哈哈 废话不多说了我们进入正题。



在Xcode4上构建three20框架

首先进入Three20官网去下载最新版本

http://three20.info/roadmap/1.0.6.2

进入官网后,如下图所示点击Download下载最新版本,目前最新版本为1.0.6.2。
下载完毕后解压缩,由于Three20目前别说国内的资料少了,国外的资料都不多。不过开发包中附带了几个Demo,MOMO 先在这里赞一下!这两天我就是靠这几个Demo来学习的。Demo的路径在下载包samples 文件夹中,一共9个Demo,建议想用Three20框架开发的盆友们 一定要好好读一读这几个Demo,比去网上找资料强多了! 

大家看看官网的说明, 如何在Xcode4上添加Three20框架。我懒得翻译了~~

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:

重点在这里,先创建好一个普通的IOS 工程,打开mac电脑的终端去执行下面这段python 脚本
three20/sre/scripts/ttmodule.py : 须要执行的脚本文件
path/to/your/project.xcodeproj  :  IOS 工程路径
这里强调一下,不要使用cd  到scripts路径下在去执行这段脚本,因为这样的话有时候会提示无效的命令,所以大家还是老老实实去输入自己的完整路径吧。 

view plain
  1. > python three20/src/scripts/ttmodule.py -p path/to/your/project/project.xcodeproj Three20 --xcode-version=4

python脚本执行完毕后,就应该环境就搭建完毕了 ,快快打开工程检查一下,如下图所示,安装成功后打开工程后在Frameworks中会出现很多Three20的相关的东西。 如果到这一步还是没有出现这些Frameworks文件,那么请仔细阅读上面的博文检查一下自己的步骤。






到这一步就彻底安装成功了,下面开始构建我们第一个项目HelloWorld。


view plain
  1. #import <UIKit/UIKit.h>
  2. int main(int argc, char *argv[])
  3. {
  4. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  5. int retVal = UIApplicationMain(argc, argv, nil, @"Three20AppDelegate");
  6. [pool release];
  7. return retVal;
  8. }

学过IOS开发的朋友绝对不会陌生,在项目中须要使用Three20库的时候须要import一下~


#import <Three20/Three20.h>

URL 简直就是three20 亮点中的亮点,实在是太好用了。有可能是因为facebook是互联网公司的原因吧,他们的引擎的原理都很像www.xx.com 这种网址的结构,因为手机不像PC 不可能同时显示多个页面,那么用URL这种方式去切换界面实在是太给力了~会省下很多逻辑判断切换界面的代码,直接去维护这个URL 就可以,由于本章主要是构建Three20框架,所以MOMO在这里只带大家学习入门的知识, 后期我肯定会详细的介绍TTURLMap 这个类,因为它实在是太好用了,哇咔咔.

举个例子
tt://Myview/1

tt://Myview/2

上面是两个软件界面,实现界面的切换的方法就好比我们在浏览器中输入网址一样,输入网址1 就进1 输入网址2 就进 2,一切事件的处理three20 都帮我们做了。


view plain
  1. #import "Three20AppDelegate.h"
  2. #import "MyViewController.h"
  3. @implementation Three20AppDelegate
  4. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  5. {
  6. //创建导航条
  7. TTNavigator* navigator = [TTNavigator navigator];
  8. navigator.persistenceMode = TTNavigatorPersistenceModeAll;
  9. navigator.window = [[[UIWindow alloc] initWithFrame:TTScreenBounds()] autorelease];
  10. //TTURLMap 非常重要的一个属性
  11. //界面的点击切换完全取决与它的设定
  12. TTURLMap* map = navigator.URLMap;
  13. //如果须要访问wab页面的话 就必需添加
  14. [map from:@"*" toViewController:[TTWebController class]];
  15. //拼一个url 意思是如果访问 "tt://MyView" 会进入 MyViewController class
  16. [map from:@"tt://MyView" toSharedViewController:[MyViewController class]];
  17. if (![navigator restoreViewControllers]) {
  18. //打开上面设置的url
  19. [navigator openURLAction:[TTURLAction actionWithURLPath:@"tt://MyView"]];
  20. }
  21. return YES;
  22. }
  23. - (void)dealloc
  24. {
  25. [super dealloc];
  26. }
  27. @end
由于在程序入口中就将URL 指向这里 ,所以在这里添加显示view等等。

view plain
  1. #import "MyViewController.h"
  2. #import <Three20Style/UIColorAdditions.h>
  3. @implementation MyViewController
  4. - (void)loadView {
  5. [super loadView];
  6. //创建一个可滑动的view
  7. UIScrollView* scrollView = [[[UIScrollView alloc] initWithFrame:TTNavigationFrame()] autorelease];
  8. scrollView.autoresizesSubviews = YES;
  9. scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
  10. //背景颜色
  11. scrollView.backgroundColor = [UIColor whiteColor];
  12. self.view = scrollView;
  13. //标题内容
  14. self.title = @"雨松MOMO程序开发" ;
  15. //设置雨松MOMO头像图片
  16. CGRect frame  = CGRectMake(100, 10, 120, 120);
  17. TTImageView *imageView = [[TTImageView alloc] initWithFrame:frame];
  18. UIImage *image = [UIImage imageNamed:@"1.jpg"];
  19. imageView.defaultImage = image;
  20. [scrollView addSubview:imageView];
  21. //view风格 边框 颜色
  22. UIColor* black = RGBCOLOR(158, 163, 172);
  23. //view风格
  24. TTStyle*  style = [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next:
  25. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  26. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]];
  27. frame = CGRectMake(5, 150, 310, 150);
  28. //新建一个TTView 将设置的风格赋值给它
  29. TTView *view = [[[TTView alloc] initWithFrame:frame] autorelease];
  30. //背景颜色
  31. view.backgroundColor = [UIColor whiteColor];
  32. //赋值风格
  33. view.style = style;
  34. //显示字符串 支持html语言
  35. NSString * text = @"爱加班,爱代码,爱HelloWorld , 爱学习,爱钻研,爱学无止境 爱玩游戏更爱做游戏,我是雨松MOMO,哇咔咔~ 我在参加2011年博客大赛 <a href=\"http://blog.51cto.com/contest2011/3361352\">点击为MOMO投上宝贵的一票</a>";
  36. frame = CGRectMake(10, 10, 290, 150);
  37. //TTStyledTextLabel 很给力啊这个 哈哈!
  38. TTStyledTextLabel* label = [[[TTStyledTextLabel alloc] initWithFrame:frame] autorelease];
  39. label.font = [UIFont systemFontOfSize:17];
  40. label.textColor = [UIColor redColor];
  41. label.text = [TTStyledText textFromXHTML:text lineBreaks:YES URLs:YES];
  42. label.contentInset = UIEdgeInsetsMake(5, 5, 5, 5);
  43. [label sizeToFit];
  44. //将label添加入自定义view
  45. [view addSubview:label];
  46. //将自动一定view 显示在主view中!
  47. [scrollView addSubview:view];
  48. }
  49. @end
到这一步,这个简单的HelloWorld程序就写完了,我们发现以前我们用到的高级界面的类基本上Three20都写了新的方法去继承,实现更佳好的效果,将麻烦的地方由引擎自身帮我们完成。看一下效果图。我添加特殊的风格View 显示text 支持html语言 可以在程序中随意添加网页链接、 
下面MOMO在贴一段官方提供的Demo中的一段代码,主要是用来设置View风格. 官方一共提供了19种view风格,代码中使用循环将这19中view 依次显示在界面中,绝对够我们开发IOS应用程序啦 哈哈~~所以说官方提供的DEMO 大家一定要好好阅读喔 哇咔咔~~
view plain
  1. - (void)loadView {
  2. UIScrollView* scrollView = [[[UIScrollView alloc] initWithFrame:TTNavigationFrame()] autorelease];
  3. scrollView.autoresizesSubviews = YES;
  4. scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
  5. scrollView.backgroundColor = RGBCOLOR(216, 221, 231);
  6. self.view = scrollView;
  7. UIColor* black = RGBCOLOR(158, 163, 172);
  8. UIColor* blue = RGBCOLOR(191, 197, 208);
  9. UIColor* darkBlue = RGBCOLOR(109, 132, 162);
  10. NSArray* styles = [NSArray arrayWithObjects:
  11. // Rectangle
  12. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  13. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]],
  14. // Rounded rectangle
  15. [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next:
  16. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  17. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]],
  18. // Gradient border
  19. [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next:
  20. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  21. [TTLinearGradientBorderStyle styleWithColor1:RGBCOLOR(0, 0, 0)
  22. color2:RGBCOLOR(216, 221, 231) width:2 next:nil]]],
  23. // Rounded left arrow
  24. [TTShapeStyle styleWithShape:[TTRoundedLeftArrowShape shapeWithRadius:5] next:
  25. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  26. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]],
  27. // Partially rounded rectangle
  28. [TTShapeStyle styleWithShape:
  29. [TTRoundedRectangleShape shapeWithTopLeft:0 topRight:0 bottomRight:10 bottomLeft:10] next:
  30. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  31. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]],
  32. // SpeechBubble with pointer left of the centre on the top edge
  33. // Locations for top edge are 45 on the left, 90 in the centre, 134.999 on the right
  34. [TTShapeStyle styleWithShape:[TTSpeechBubbleShape shapeWithRadius:5
  35. pointLocation:60
  36. pointAngle:90
  37. pointSize:CGSizeMake(20,10)] next:
  38. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  39. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]],
  40. // SpeechBubble with pointer on the extreme left on the bottom edge
  41. // Locations for bottom edge are 225 on the left, 270 in the centre, 314.999 on the left
  42. [TTShapeStyle styleWithShape:[TTSpeechBubbleShape shapeWithRadius:5
  43. pointLocation:314
  44. pointAngle:270
  45. pointSize:CGSizeMake(20,10)] next:
  46. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  47. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]],
  48. // SpeechBubble with pointer on the bottom of the left edge
  49. // Locations for left edge are 315 on the bottom, 0 in the centre, 44.999 on top
  50. [TTShapeStyle styleWithShape:[TTSpeechBubbleShape shapeWithRadius:5
  51. pointLocation:315
  52. pointAngle:0
  53. pointSize:CGSizeMake(10,20)] next:
  54. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  55. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]],
  56. // SpeechBubble with pointer on the centre of the left edge
  57. // Locations for left edge are 315 on the bottom, 0 in the centre, 44.999 on top
  58. [TTShapeStyle styleWithShape:[TTSpeechBubbleShape shapeWithRadius:5 pointLocation:0
  59. pointAngle:0
  60. pointSize:CGSizeMake(20,10)] next:
  61. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  62. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]],
  63. // SpeechBubble with pointer on the bottom of the right hand edge
  64. // Locations for right edge are 135 on top, 180 in the middle, 314.999 on the bottom
  65. [TTShapeStyle styleWithShape:[TTSpeechBubbleShape shapeWithRadius:5 pointLocation:224
  66. pointAngle:180
  67. pointSize:CGSizeMake(15,15)] next:
  68. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  69. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]],
  70. // Drop shadow
  71. [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next:
  72. [TTShadowStyle styleWithColor:RGBACOLOR(0,0,0,0.5) blur:5 offset:CGSizeMake(2, 2) next:
  73. [TTInsetStyle styleWithInset:UIEdgeInsetsMake(0.25, 0.25, 0.25, 0.25) next:
  74. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  75. [TTInsetStyle styleWithInset:UIEdgeInsetsMake(-0.25, -0.25, -0.25, -0.25) next:
  76. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]]]]],
  77. // Inner shadow
  78. [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next:
  79. [TTSolidFillStyle styleWithColor:[UIColor whiteColor] next:
  80. [TTInnerShadowStyle styleWithColor:RGBACOLOR(0,0,0,0.5) blur:6 offset:CGSizeMake(1, 1) next:
  81. [TTSolidBorderStyle styleWithColor:black width:1 next:nil]]]],
  82. // Chiseled button
  83. [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next:
  84. [TTShadowStyle styleWithColor:RGBACOLOR(255,255,255,0.9) blur:1 offset:CGSizeMake(0, 1) next:
  85. [TTLinearGradientFillStyle styleWithColor1:RGBCOLOR(255, 255, 255)
  86. color2:RGBCOLOR(216, 221, 231) next:
  87. [TTSolidBorderStyle styleWithColor:blue width:1 next:nil]]]],
  88. // Embossed button
  89. [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:10] next:
  90. [TTLinearGradientFillStyle styleWithColor1:RGBCOLOR(255, 255, 255)
  91. color2:RGBCOLOR(216, 221, 231) next:
  92. [TTFourBorderStyle styleWithTop:blue right:black bottom:black left:blue width:1 next:nil]]],
  93. // Toolbar button
  94. [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:4.5] next:
  95. [TTShadowStyle styleWithColor:RGBCOLOR(255,255,255) blur:1 offset:CGSizeMake(0, 1) next:
  96. [TTReflectiveFillStyle styleWithColor:darkBlue next:
  97. [TTBevelBorderStyle styleWithHighlight:[darkBlue shadow]
  98. shadow:[darkBlue multiplyHue:1 saturation:0.5 value:0.5]
  99. width:1 lightSource:270 next:
  100. [TTInsetStyle styleWithInset:UIEdgeInsetsMake(0, -1, 0, -1) next:
  101. [TTBevelBorderStyle styleWithHighlight:nil shadow:RGBACOLOR(0,0,0,0.15)
  102. width:1 lightSource:270 next:nil]]]]]],
  103. // Back button
  104. [TTShapeStyle styleWithShape:[TTRoundedLeftArrowShape shapeWithRadius:4.5] next:
  105. [TTShadowStyle styleWithColor:RGBCOLOR(255,255,255) blur:1 offset:CGSizeMake(0, 1) next:
  106. [TTReflectiveFillStyle styleWithColor:darkBlue next:
  107. [TTBevelBorderStyle styleWithHighlight:[darkBlue shadow]
  108. shadow:[darkBlue multiplyHue:1 saturation:0.5 value:0.5]
  109. width:1 lightSource:270 next:
  110. [TTInsetStyle styleWithInset:UIEdgeInsetsMake(0, -1, 0, -1) next:
  111. [TTBevelBorderStyle styleWithHighlight:nil shadow:RGBACOLOR(0,0,0,0.15)
  112. width:1 lightSource:270 next:nil]]]]]],
  113. // Badge
  114. [TTShapeStyle styleWithShape:[TTRoundedRectangleShape shapeWithRadius:TT_ROUNDED] next:
  115. [TTInsetStyle styleWithInset:UIEdgeInsetsMake(1.5, 1.5, 1.5, 1.5) next:
  116. [TTShadowStyle styleWithColor:RGBACOLOR(0,0,0,0.8) blur:3 offset:CGSizeMake(0, 5) next:
  117. [TTReflectiveFillStyle styleWithColor:[UIColor redColor] next:
  118. [TTInsetStyle styleWithInset:UIEdgeInsetsMake(-1.5, -1.5, -1.5, -1.5) next:
  119. [TTSolidBorderStyle styleWithColor:[UIColor whiteColor] width:3 next:nil]]]]]],
  120. // Mask
  121. [TTMaskStyle styleWithMask:TTIMAGE(@"bundle://mask.png") next:
  122. [TTLinearGradientFillStyle styleWithColor1:RGBCOLOR(0, 180, 231)
  123. color2:RGBCOLOR(0, 0, 255) next:nil]],
  124. // simple bottom only border
  125. [TTShapeStyle styleWithShape:[TTRectangleShape shape] next:
  126. [TTSolidFillStyle styleWithColor:RGBCOLOR(255, 255, 255) next:
  127. [TTFourBorderStyle styleWithTop:nil right:nil bottom:black left:nil width:5 next:nil]]],
  128. nil];
  129. CGFloat padding = 10.0f;
  130. CGFloat viewWidth = scrollView.width/2 - padding*2;
  131. CGFloat viewHeight = TT_ROW_HEIGHT;
  132. CGFloat x = padding;
  133. CGFloat y = padding;
  134. for (TTStyle* style in styles) {
  135. if (x + viewWidth >= scrollView.width) {
  136. x = padding;
  137. y += viewHeight + padding;
  138. }
  139. CGRect frame = CGRectMake(x, y, viewWidth, viewHeight);
  140. TTView* view = [[[TTView alloc] initWithFrame:frame] autorelease];
  141. view.backgroundColor = scrollView.backgroundColor;
  142. view.style = style;
  143. [scrollView addSubview:view];
  144. x += frame.size.width + padding;
  145. }
  146. scrollView.contentSize = CGSizeMake(scrollView.width, y + viewHeight + padding);
  147. }
效果图

最后欢迎各位盆友可以和MOMO一起讨论Three20软件开发,这两天学Three20学的实在是太爽了~~如果你觉得看得不清楚,MOMO附带上本章的源码下载,希望大家可以一起学习 哈哈~。哇咔咔~ MOMO愿和 大家好好学习,大家一起进步哈~!!!


下载地址:http://download.csdn.net/detail/xys289187120/3849870

(下载后必需搭建three20环境成功后才能运行~ 因为three20为引用加载,所以程序路径都是我本机的请见谅!)

iPhone Three20软件引擎之构建开发环境与HelloWorld相关推荐

  1. 构建开发环境 构建demo_构建自己的wotsapp第6部分

    构建开发环境 构建demo I should start this article with a disclaimer: It is based on iOS 13, Swift 5, and Xco ...

  2. Lightly 自动构建开发环境

    对一般的编辑器或集成开发环境而言,由于系统不同以及依赖出现差异,许多人往往面临开发好的项目在部署或协作时,面临功能失常的情况. 通常,构建开发环境耗时长达数小时.以团队协作为例,项目组加入新成员时,往 ...

  3. 构建开发环境 构建demo_科技构建了我们的现实

    构建开发环境 构建demo 重点 (Top highlight) What Stories Are True in Your Universe? Examining the words of the ...

  4. 构建开发环境 构建demo_构建自己的wotsapp第1部分

    构建开发环境 构建demo I should start this article with a disclaimer: It is based on iOS 13, Swift 5, and Xco ...

  5. Android 攻城狮的进击 1 开发环境搭建HelloWorld.apk

    总览:     Java简介     Java相关常识      Android简介      Android相关常识      开发环境搭建      HelloWorld.apk      参考文 ...

  6. Ubuntu基本软件安装和web开发环境配置

    经过两天的的不懈努力,终于把环境配置好了.其中从淡定到蛋疼,从希望到失望再到绝望的过程我就不多说了.写本文的目的是不希望别人在配置环境时再像我一样遭受迷失在搜索引擎里的痛苦.闲话少说,直接上教程.(本 ...

  7. 生死簿后台管理系统(一)——使用Docker构建开发环境

    最近有个段子非常火,说有个程序员梦见自己被阎王召见,让他帮忙开发一个后台管理系统.在一笑而过之后,我觉得如果要是能把这个系统做出来,应该颇具娱乐性,也顺便了解一下高并发以及大数据的相关技术--每天要上 ...

  8. 利用Docker构建开发环境

    最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境,感觉生活在PAAS时代的程序员真是幸福,本文会简要介绍下Docker是什么,如何利用Docker来搭建自己的开发环 ...

  9. Ubuntu22.04安装、配置、美化、软件安装、配置开发环境

    一.Ubuntu.Windows11(10)双系统安装 因为ubuntu的安装网上的教程特别多了,所以这里不做赘述,推荐使用小破站这个up主的教程:Windows 和 Ubuntu 双系统从安装到卸载 ...

最新文章

  1. 大众点评数据平台架构变迁
  2. python使用fpdf创建pdf并写入hello world
  3. python calu_Python基本数据类型
  4. 全球与中国智慧物流市场”十四五“发展状况及投资前景规划报告2021-2027年版
  5. php文件怎么阅读器,Vue文件阅读器组件FileReader API
  6. 黑旋风简约引导页源码-个人官网必备
  7. ATA接口寄存器描写叙述
  8. pg_lightool-postgres数据分布查看工具
  9. HDU 3339 In Action(最短路+背包)题解
  10. 学习c++ 必知三大特性
  11. Hive微博数据统计分析
  12. 多线段几何图形—— 简单几何图形(多边形三角形化)
  13. OpenCV更改图片颜色
  14. Linux下的Samba学习(二)------用实验快速学习Samba服务器设置
  15. 软件测试如何提高测试的覆盖率,测试覆盖率是什么?
  16. mysql积累--索引
  17. 哈工大赛尔 | 事理图谱:事件演化的规律和模式
  18. C语言实现:任意进制转换
  19. delta函数的简化
  20. Word排版——毕业论文专业排版4——题注

热门文章

  1. bitbucket迁移
  2. redis常用数据结构解析
  3. JavaScript要点 (二) 使用误区
  4. Net托管世界的应用程序域和线程
  5. 吸引纠缠的双白矮星和迭代收敛的神经网络
  6. matlab读int16读文件_MATLAB: 使用内存映射加快文件读写
  7. fastreport文本字数太多换行_Flutter实战】文本组件及五大案例
  8. 2.16 关于 Python Numpy 的说明-深度学习-Stanford吴恩达教授
  9. Ardino基础教程 16_一位数码管
  10. STM32 进阶教程 11 - RAM中运行程序