iOS實現QQ介面
編寫個QQ介面,有三個組,每個組有人,並顯示線上不線上;
先看一下效果圖
這裡省了事因為我的圖片只用了一張,如果要根據人的不同設定,只要在cell裡面改一下就行了;
主要是實現點選上面分組展開內容,再點選收回去。
廢話不多說,上菜:
我們先來構造資料:
NSArray * InitArray =@[
@{
@"Name":@"朋友",
@"Group":@"YES",
@"Child":@[
@{@"Name":@"張三",
@"State":@"線上",},
@{@"Name":@"王五",
@"State":@"離開"}
]
},
@{
@”Name”:@”家人”,
@”Group”:@”YES”,
@”Child”:@[@{@"Name":@"姐姐",
@"State":@"線上"},
@{@"Name":@"妹妹",
@"State":@"線上"},
@{@"Name":@"哥哥",
@"State":@"離開"},
@{@"Name":@"弟弟",
@"State":@"離開"}]
},
@{
@”Name”:@”陌生人”,
@”Group”:@”YES”,
@”Child”:@[
@{@"Name":@"小王",
@"State":@"線上"},
@{@"Name":@"小李",
@"State":@"離開"},
@{@"Name":@"小紅",
@"State":@"離開"}]}
];
設定一個陣列屬性 來接受資料
@property (nonatomic,copy) NSMutableArray * CellArray;
好了,我們來利用資料構造介面吧;
介面很簡單:
一個圖片是自己的頭像;
一個是自己的網名
一個線上狀態
下面就是一個表格(tableview)
@interface ViewController ()
{
UITableView * TableV;
}@end
設定一個tableview ;
往裡面放:
UIImageView *IconImageV = [[UIImageView alloc]initWithFrame:CGRectMake(15, 30, 60, 60)];
IconImageV.image = [UIImage imageNamed:@"icon.png"];
[self.view addSubview:IconImageV];
UILabel *NameLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 30, 100, 30)];
NameLabel.text = @”雪松”;
NameLabel.textAlignment = 1;//設定文字的對其方式 居中
[self.view addSubview:NameLabel];
UILabel *StateLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 60, 100, 30)];
StateLabel.text = @”線上”;
NameLabel.textAlignment = 1;
[self.view addSubview:StateLabel];TableV = [[UITableView alloc]initWithFrame:CGRectMake(15, 100, 290, 350)];
TableV.delegate = self;
TableV.dataSource = self;
TableV.separatorStyle=0;
TableV.backgroundColor =[UIColor yellowColor];
[self.view addSubview:TableV];
然後就是我們來構造table了
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{UITableViewCell *cell ;
NSDictionary * dectionary = [_CellArray objectAtIndex:indexPath.row];
if([dectionary objectForKey:@"Group"])
{
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@”Group”];
cell.textLabel.text = [dectionary objectForKey:@"Name"];
cell.textLabel.textAlignment=0;
cell.backgroundColor = [UIColor grayColor];
cell.tag = 1;
}
else
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@”Child”];
cell.imageView.image = [UIImage imageNamed: @"icon.png"];
cell.textLabel.text = [dectionary objectForKey:@"Name"];
cell.detailTextLabel.text = [dectionary objectForKey:@"State"];
}
return cell;}
這裡我想說一下,這個tag ,我想了很半天,如何用來記錄這個分組是開啟的還是摺疊的呢,沒有辦法,最後想到了tag 用tag=1表示摺疊的,=2表示是開啟的;
下面最難的就是,摺疊開啟的方式了;
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableDictionary * dictionary = [NSMutableDictionary dictionaryWithDictionary:[_CellArray objectAtIndex:indexPath.row]];UITableViewCell *cell = [TableV cellForRowAtIndexPath:indexPath];
NSLog(@”%@”,cell.textLabel.text);
if([dictionary objectForKey:@"Group"])
{
NSArray *ChildArray = [dictionary objectForKey:@"Child"];
NSMutableArray *PathArray = [NSMutableArray array];if(cell.tag==1)
{
cell.tag=2;
for (int i =0 ;i<ChildArray.count;i++)
{
dictionary = [ChildArray objectAtIndex:i];
[_CellArray insertObject:dictionary atIndex:i+indexPath.row+1];
NSIndexPath *path = [NSIndexPath indexPathForRow:i+indexPath.row+1 inSection:0];
[PathArray addObject:path];
}
[TableV insertRowsAtIndexPaths:PathArray withRowAnimation:UITableViewRowAnimationAutomatic];
}
else
{
cell.tag=1;
NSMutableIndexSet * deleteSet= [NSMutableIndexSet indexSet];
for (NSDictionary *dic in ChildArray)
{
NSInteger row= [_CellArray indexOfObject:dic];
NSIndexPath * Path = [NSIndexPath indexPathForRow:row inSection:0];
[PathArray addObject:Path];
[deleteSet addIndex:row];
}
[_CellArray removeObjectsAtIndexes:deleteSet];
[TableV deleteRowsAtIndexPaths:PathArray withRowAnimation:UITableViewRowAnimationBottom];
}
}}
上面是具體的方式,如果看不懂,那就去看我的另外一篇部落格http://blog.csdn.net/u010123208/article/details/38176943
好了,QQ介面的原始碼在
http://download.csdn.net/detail/u010123208/7774851
歡迎下載
相關文章
- iOS微信QQ聊天介面的UI框架以及Socket簡單實現群聊功能iOSUI框架
- QQ音樂API koa2實現 - 全介面實現API
- 九,iOS圓形介面選單的實現iOS
- QQ增刪功能實現
- iOS開發中QQ好友列表下拉顯示全部好友實現思路iOS
- Java介面程式設計實戰(一)——簡易QQ登入介面Java程式設計
- QQ搶紅包外掛實現
- Flutter頁面跳轉到IOS原生介面 如何實現?FlutteriOS
- jQuery實現高仿QQ音樂jQuery
- 實現QQ的TabBar拖拽動效tabBar
- QQ音樂api介面梳理API
- 如何實現 axios 的自定義介面卡 adapteriOSAPT
- 32.qt quick-模仿QQ登入介面實現3D旋轉(Rotation、Flipable)QTUI3D
- (iOS)點選cell推出現新介面iOS
- iOS 實現多個可變 cell 複雜介面的製作iOS
- QQ模擬登入實現後篇
- QQ TEA加密演算法 JAVA實現加密演算法Java
- 仿QQ錄音以及振幅動畫實現動畫
- 兩個有名管道實現qq通訊
- QQ聊天記錄儲存如何實現?
- QQ使用者登陸介面
- QQ寵桌面介面思路值得研究
- QTP測試QQ登入介面QT
- qq iOS環境配置及呼叫iOS
- TypeScript 類實現介面TypeScript
- 實現呼叫API介面API
- Spring Boot實現傳送QQ郵件Spring Boot
- Go 語言實現 QQ 掃碼登陸Go
- QQ 快速登入協議分析與實現協議
- Java實現QQ郵件傳送客戶端Java客戶端
- delphi 判斷類是否實現介面,獲取類實現的介面
- iOS實現字串動畫iOS字串動畫
- iOS全景效果實現iOS
- 什麼是介面?如何定義介面?如何實現介面?
- Java實現QQ第三方登入Java
- Python自動登入QQ的實現示例Python
- 一個RecyclerView實現QQ空間相簿佈局View
- iOS 10 SiriKit QQ 適配詳解iOS