想尝试three20,但是发现很多资料都过时了,比如增加模板那个。然后找说明,发现这篇文章基本上是可用的。
弄了好几天终于把three20弄到项目中了。
(1)新建一个空项目
(2)将three20的文件夹复制到与新建的项目同级下(这个three20是改过一些文件后重新编译的所以文件名字改了下)
(3)选中下图中的文件
(4)将上面的文件托至新建的工程中,如下图
(5)看一下新拖进来的文件的结构
(6)选中“Dependencies文件夹”下的几个文件同样拖到新建工程下,和最先拖进来的文件同级。
(7)点击工程 》TARGETS 》Test320 找到 “Target Dependencies” , 点击“+”号将带房子的文件加入到项目中。
(8)点击工程 》TARGETS 》Test320 找到 “Link Binary With Libraies” , 点击“+”号将"xxx.a"的文件加入到项目中,并把QuartzCore.framework框架引入。
(9)再截个图,防止有些朋友找不到具体在那里配置
(10)点击PROJECT 下的Test320,点击选项卡的Build Settings,在Header Search Path添加Three20的头文件存放位置,下图只添加了一个包的路径(../Three20_1_0_11/Build/Products/three20),路径为相当路径,也可为绝对路径。
(11)同样的方法添加other link为-all_load -ObjC(这个我添加后反而链接出错了,后来去掉了链接反而能通过。但是出错的事实证明,这是必须的)
(12)开始测试吧,贴出代码,看图说话
- #import <Three20/Three20.h>
⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
- <span style="font-size: small;"> self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
- // Override point for customization after application launch.
- TTTabGrid *_tabBar3 = [[TTTabGrid alloc] initWithFrame:CGRectMake(0, 100, 280,80)];
- _tabBar3.backgroundColor = [UIColor clearColor];
- _tabBar3.tabItems = [NSArray arrayWithObjects:
- [[[TTTabItem alloc] initWithTitle:@"Banana"] autorelease],
- [[[TTTabItem alloc] initWithTitle:@"Cherry"] autorelease],
- [[[TTTabItem alloc] initWithTitle:@"Orange"] autorelease],
- [[[TTTabItem alloc] initWithTitle:@"Pineapple"] autorelease],
- [[[TTTabItem alloc] initWithTitle:@"Grape"] autorelease],
- [[[TTTabItem alloc] initWithTitle:@"Mango"] autorelease],
- [[[TTTabItem alloc] initWithTitle:@"Blueberry"] autorelease],
- [[[TTTabItem alloc] initWithTitle:@"Apple"] autorelease],
- [[[TTTabItem alloc] initWithTitle:@"Peach"] autorelease],
- nil];
- [_tabBar3 sizeToFit];
- [self.window addSubview:_tabBar3];
- [self.window makeKeyAndVisible];
- return YES;</span>
(13)现在编译运行,哈哈,回报错的。
(14)双击下图中的文件后再运行下工程
(15)成功拉
但是我在ipad上实验,发现是死机的,出现了-[UIDeviceRGBColor multiplyHue:saturation:value:]: unrecognized selector sent 具体怎么回事呢,还要继续研究。
继续研究,自己跟踪,无果。然后上网搜索,three20 UIDeviceRGBColor multiplyHue ,结果在cocochina上发现了解决方案:
请检查是否加入了QuartzCore.framework
并且检查编译选项是否添加了 -all_load -ObjC
我重新尝试,发现其实还是要在other linker flags加入-all_load -ObjC,不是编译选项增加。可能我之前没写正确,或者load和-objC之间没有空格。反正最后,效果出来了。