iOS 8:帮妹子调试第三方库 - RATreeView

关键字:RATreeView  妹子

周日晚上遇到一妹子用RATreeView(GitHub链接),想改变二级Cell高度。这库我也没接触过,但是,对方是妹子,明天还要交差,那就硬着头皮看代码吧。没想到此库结构非常清晰,真是业界良心。现在老了,很多事做完就忘,当是日志写写。下面记录下查找问题的过程。

1、先运行demo。如果跑不起来,那真是坑爹了。不过,免费的东西,也别要求太多,有代码就挺厚道的,毕竟提供了参考。demo被妹子改过,还好功能较单一。

2、看AppDelegate,找rootViewController。

 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 2 {
 3     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 4   if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
 5       self.viewController = [[RAViewController alloc] initWithNibName:@"RAViewController_iPhone" bundle:nil];
 6   } else {
 7       self.viewController = [[RAViewController alloc] initWithNibName:@"RAViewController_iPad" bundle:nil];
 8   }
 9   self.window.rootViewController = self.viewController;
10     [self.window makeKeyAndVisible];
11     return YES;
12 }

从代码可知,RAViewController为根控制器。

3、找RAViewController的viewDidLoad、viewWillAppear等生命周期方法。在viewDidLoad中找到如下代码:

 1   RATreeView *treeView = [[RATreeView alloc] initWithFrame:self.view.frame];
 2
 3   treeView.delegate = self;
 4   treeView.dataSource = self;
 5   treeView.separatorStyle = RATreeViewCellSeparatorStyleSingleLine;
 6
 7   [treeView reloadData];
 8   [treeView expandRowForItem:phone withRowAnimation:RATreeViewRowAnimationNone]; //expands Row
 9   [treeView setBackgroundColor:[UIColor redColor]];
10
11   self.treeView = treeView;

RAViewController只覆盖了viewDidLoad,可知,应用呈现出来的视图即是11行self.treeView = treeView的操作结果。

4、受经验影响,查找heightFor方法,找到treeView:heightForRowForItem:treeNodeInfo:返回值为CGFloat,那基本是它在控制高度了。

 1 #pragma mark TreeView Delegate methods
 2 - (CGFloat)treeView:(RATreeView *)treeView heightForRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo
 3 {
 4     if (treeNodeInfo.treeDepthLevel == 0) {
 5         return 100;
 6     }if (treeNodeInfo.treeDepthLevel == 1 && treeNodeInfo.siblingsNumber == 0) {
 7         return 20;
 8     }
 9     return 47;
10 }

妹子想控制二级Cell高度,那第6行代码if (treeNodeInfo.treeDepthLevel == 1 && treeNodeInfo.siblingsNumber == 0)应该是判断二级cell,果断改之,新代码如下:

 1 #pragma mark TreeView Delegate methods
 2 - (CGFloat)treeView:(RATreeView *)treeView heightForRowForItem:(id)item treeNodeInfo:(RATreeNodeInfo *)treeNodeInfo
 3 {
 4     if (treeNodeInfo.treeDepthLevel == 0) {
 5         return 100;
 6     }if (treeNodeInfo.treeDepthLevel == 1/*&&treeNodeInfo.siblingsNumber == 0*/) {
 7         if ([item isKindOfClass:[RADataObject class]]){
 8             RADataObject *dataObject = (RADataObject*)item;
 9             if ([dataObject.name isEqualToString:@"Phone 1"]) {
10                 return 150;
11             }
12         }
13         return 20;
14     }
15     return 47;
16 }

示例代码,硬编码,懒得搞,运行后妹子一看,得,就这个味。好,继续看《国土安全》。

总结:有毛线总结。

时间: 2024-08-17 09:53:56

iOS 8:帮妹子调试第三方库 - RATreeView的相关文章

iOS中一些 常用的第三方库

转自ibireme的博客 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽. 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库. 首先整理了一份Github上排名靠前的iOS库(大概600个repos) 除了逛一下每日/每月流行之外,也可以到这里来看一下整个iOS Repos的排名. 下面是一些比较流行的第三方库: HTTP 相比较之下

第三方库RATreeView的使用记录

由于项目需要用到树状列表,可以增加成员变量,于是用了第三方RATreeView开元库,头一次使用,安装github上的使用说明和Demo跑了一下,挺满意,增加成员什么的都很简单,和tableview很像是,但是在处理选择的cell时我纠结了一会,用惯了tableview的index:index.row   index.section等,猛然接触到RATreeView处理时,不知道该如何办了,下面记录的我学习过程, 下面先看下,RATreeView是如何管理选择这个动作的,方法如下: <span

iOS 开发的非常有用 第三方库

ios中那些好用的第三方库 ios 里面有很多很多好用的第三方框架,有许多是项目中必用的,本文主要来写一些常用的ios第三方库的使用 (一)Masonry Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS X. Masonry是一个用代码写ios或os界面的库,可以代替Auto layout. Masonry的github地址:https://github.com/SnapKit/Maso

iOS开发中用到的第三方库概览

前言:记录一下使用过和接触过的第三方库,重要程度与顺序无关 网络请求: AFNetworking:AFNetworking is a delightful networking library for iOS and Mac OS X. YTKNetwork:YTKNetwork is a high level request util based on AFNetworking. 转模型 MJExtension:A fast, convenient and nonintrusive conve

iOS 常用的几个第三方库

网络通信 1.ASIHTTPRequest 这是一个经典的老库,功能完全而强大,但已经停止更新很久了(iOS5.0停止更新,但是我最近看github上这个项目有新改动).在不同iOS版本上略微有一些小问题(提醒显示上的),所以用的时候还是稍微修改一下比较好. 下载地址:https://github.com/pokeb/asi-http-request 2.AFNetworking 轻量级的通讯类库,使用非常简单. 下载地址:https://github.com/AFNetworking/AFNe

IOS开发中有用的第三方库

#Objective-C中最受瞩目库 [链接](https://github.com/languages??/Objective-C/most_watched) * [three20](https://github.com/facebook/three20) * faebook的320库** * [AFNetworking](https://github.com/AFNetworking/AFNetworking) *网络库** * [MBProgressHUD](https://github.

iOS自动处理键盘事件的第三方库:IQKeyboardManager

我们写界面要考虑很多用户体验问题,键盘事件的响应就是比较麻烦的一种.我们需要监听键盘事件,考虑点击背景收起键盘.考虑键盘遮挡输入框问题等等,而且每个界面都要做这么一套.这个库帮我们解决了这个事情. 这个库的下载地址:https://github.com/hackiftekhar/IQKeyboardManager 这个库是一个单例,它一旦生效,全项目任何界面都有效.让它生效的代码可以写在任意位置,我写在AppDelegate里. 1 - (BOOL)application:(UIApplicat

iOS关于rar解压第三方库Unrar4iOS使用总结

作者最近的公司项目要做实现rar解压的功能,在网上找了很久貌似关于rar解压的资料很少,不过有很多人推荐一个名叫“Unrar4iOS”的第三方开源框架,于是下载并尝试使用发现该开源框架并在使用过程中发现了一些存在的问题,特在此做下总结让后来人少走些弯路. 1.不支持armv7s: 2.编译好的framework中将Unrar4iOS.h和Unrar4iOS.mm编译在内有些方法并未实现,比如-(BOOL) unrarFileTo:(NSString*) path overWrite:(BOOL)

iOS, Xcode11,项目提示第三方库报错无法运行 bundle format unrecognized, invalid, or unsuitable

检查你有没有把静态库和动态库配置错误!! 下图处是配置动态库的地方! 对于动态库和静态库都有使用的时候,注意把静态库设置成“Do not Embeded” 原文地址:https://www.cnblogs.com/Plorde/p/12685748.html