效果图如下:
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
#import "AppDelegate.h"
#import "RootViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
RootViewController *root = [[RootViewController alloc] init];
UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:root];
self.window.rootViewController = navi;
[self.window makeKeyAndVisible];
return YES;
}
@end
#import <UIKit/UIKit.h>
@interface RootViewController : UIViewController
@end
#import "RootViewController.h"
#import "MainCell.h"
#import "DetialTableViewCell.h"
@interface RootViewController ()<UITableViewDataSource,UITableViewDelegate>
{
UITableView *_tableView;
NSMutableDictionary *dic;//存对应的数据
NSMutableArray *selectedArr;// 二级列表是否展开状态
NSMutableArray *titleDataArray;
NSArray *dataArray;//数据源,显示每个cell的数据
NSMutableDictionary *stateDic;//三级列表是否展开状态
NSMutableArray *groupArr0;
NSMutableArray *groupArr1;
NSMutableArray *groupArr2;
NSMutableArray *groupArr3;
NSMutableArray *groupArr4;
NSMutableArray *groupArr5;
}
@end
@implementation RootViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"列表";
dic = [[NSMutableDictionary alloc] init];
selectedArr = [[NSMutableArray alloc] init];
dataArray = [[NSMutableArray alloc] init];
// 初始化tableView
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320*scaleX, [UIScreen mainScreen].bounds.size.height) style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
// 隐藏滚动条
_tableView.showsVerticalScrollIndicator = NO;
_tableView.showsHorizontalScrollIndicator = NO;
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
[self.view addSubview:_tableView];
// 加载数据
[self loadData];
}
/**
* 加载数据
*/
- (void)loadData
{
titleDataArray = [[NSMutableArray alloc] initWithObjects:@"亲朋",@"家人",@"好友", @"蓝颜",@"同学",@"老乡",nil];
NSMutableDictionary *nameAndStateDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"小莉",@"name",@"NO",@"state", nil];
NSMutableDictionary *nameAndStateDic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"婷婷",@"name",@"NO",@"state", nil];
NSMutableDictionary *nameAndStateDic3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"小庄",@"name",@"NO",@"state", nil];
groupArr0 = [[NSMutableArray alloc] initWithObjects:nameAndStateDic1,nameAndStateDic2,nameAndStateDic3, nil];
NSMutableDictionary *nameAndStateDic4 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"晨晨姐",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic5 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"李涛",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic6 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"海波",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic7 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"张敏",@"name",@"NO",@"state",nil];
groupArr1 = [[NSMutableArray alloc]initWithObjects:nameAndStateDic4,nameAndStateDic5,nameAndStateDic6,nameAndStateDic7, nil];
NSMutableDictionary *nameAndStateDic8 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"杨浩",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic9 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"小明",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic10 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"洋洋",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic11 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"赵蒙",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic12 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"小催",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic13 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"和平",@"name",@"NO",@"state",nil];
groupArr2 = [[NSMutableArray alloc]initWithObjects:nameAndStateDic8,nameAndStateDic9,nameAndStateDic10,nameAndStateDic11,nameAndStateDic12,nameAndStateDic13,nil];
NSMutableDictionary *nameAndStateDic14 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"超人",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic15 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"怪兽",@"name",@"NO",@"state",nil];
groupArr3 = [[NSMutableArray alloc] initWithObjects:nameAndStateDic14,nameAndStateDic15, nil];
NSMutableDictionary *nameAndStateDic16 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"大包",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic17 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"小林子",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic18 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"石头",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic19 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"小轩轩",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic20 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"阿东",@"name",@"NO",@"state",nil];
groupArr4 = [[NSMutableArray alloc]initWithObjects:nameAndStateDic16,nameAndStateDic17,nameAndStateDic18,nameAndStateDic19,nameAndStateDic20, nil];
NSMutableDictionary *nameAndStateDic21 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"郑平",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic22 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"刘凡",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic23 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"韩琴",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic24 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"刘华健",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic25 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"彭晓明",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic26 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"张欢",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic27 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"刘来楠",@"name",@"NO",@"state",nil];
NSMutableDictionary *nameAndStateDic28 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",@"任强",@"name",@"NO",@"state",nil];
groupArr5 = [[NSMutableArray alloc]initWithObjects:nameAndStateDic21,nameAndStateDic22,nameAndStateDic23,nameAndStateDic24,nameAndStateDic25,nameAndStateDic26,nameAndStateDic27,nameAndStateDic28, nil];
[dic setValue:groupArr0 forKey:@"0"];
[dic setValue:groupArr1 forKey:@"1"];
[dic setValue:groupArr2 forKey:@"2"];
[dic setValue:groupArr3 forKey:@"3"];
[dic setValue:groupArr4 forKey:@"4"];
[dic setValue:groupArr5 forKey:@"5"];
}
#pragma mark - tableViewDelegate -
// 返回几个表头
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return titleDataArray.count;
}
// 每个表头返回几行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSString *string = [NSString stringWithFormat:@"%d",(int)section];
// 如果表头返回值不为零,则修改图片(改成箭头向下的图片)
if ([selectedArr containsObject:string]) {
UIImageView *imageView = (UIImageView *)[_tableView viewWithTag:20000 + section];
imageView.image = [UIImage imageNamed:@"buddy_header_arrow_down"];
NSArray *array1 = dic[string];
return array1.count;
}
return 0;
}
// 设置表头的高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 40*scaleX;
}
// Section Footer的高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.2;
}
// 设置view,将替代titleForHeaderInsection方法
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320*scaleX, 30*scaleY)];
view.backgroundColor = [UIColor whiteColor];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(20*scaleX, 5*scaleY, tableView.frame.size.width - 20*scaleX, 30*scaleY)];
titleLabel.text = [titleDataArray objectAtIndex:section];
[view addSubview:titleLabel];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(5*scaleX, 12*scaleY, 15*scaleX, 15*scaleY)];
imageView.tag = 20000+section;
// 判断是不是选中状态
NSString *string = [NSString stringWithFormat:@"%d",(int)section];
if ([selectedArr containsObject:string]) {
imageView.image = [UIImage imageNamed:@"buddy_header_arrow_down"];
}else{
imageView.image = [UIImage imageNamed:@"buddy_header_arrow_right"];
}
[view addSubview:imageView];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, 320*scaleX, 40*scaleY);
button.tag = 100 + section;
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:button];
UIImageView *lineImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 40*scaleY - 1, 320*scaleX, 1)];
lineImage.image = [UIImage imageNamed:@"line"];
[view addSubview:lineImage];
return view;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *indexStr = [NSString stringWithFormat:@"%d",(int)indexPath.section];
if ([dic[indexStr][indexPath.row][@"cell"] isEqualToString:@"MainCell"]) {
return 60*scaleY;
}else{
return 40*scaleY;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 当前是第几个表头
NSString *indexStr = [NSString stringWithFormat:@"%d",(int)indexPath.section];
if ([dic[indexStr][indexPath.row][@"cell"] isEqualToString:@"MainCell"]) {
static NSString *identifier = @"MainCell";
MainCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) {
cell = [[MainCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
cell.selectionStyle = UITableViewCellSelectionStyleGray;
}
if ([selectedArr containsObject:indexStr]) {
cell.Headerphoto.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.png",arc4random()%11]];
cell.nameLabel.text = dic[indexStr][indexPath.row][@"name"];
cell.IntroductionLabel.text = @"滴滴雨点仿佛似流泪,滴在我冰冷的身躯";
cell.networkLabel.text = @"2G";
}
// ???
if (indexPath.row == dataArray.count - 1) {
cell.imageLine.image = nil;
}else{
cell.imageLine.image = [UIImage imageNamed:@"line"];
}
return cell;
}else if ([dic[indexStr][indexPath.row][@"cell"] isEqualToString:@"AttachedCell"]){
static NSString *detialIdentifier = @"AttachedCell";
DetialTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:detialIdentifier];
if (cell == nil) {
cell = [[DetialTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:detialIdentifier];
cell.selectionStyle = UITableViewCellSeparatorStyleNone;
cell.imageLine.image = [UIImage imageNamed:@"line"];
}
return cell;
}
return nil;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// TODO:search
[_tableView deselectRowAtIndexPath:indexPath animated:YES];
NSString *indexStr = [NSString stringWithFormat:@"%d",(int)indexPath.section];
NSIndexPath *path = nil;
if ([dic[indexStr][indexPath.row][@"cell"] isEqualToString:@"MainCell"]) {
// TODO:search
path = [NSIndexPath indexPathForItem:(indexPath.row + 1) inSection:indexPath.section];
}else{
path = indexPath;
}
if ([dic[indexStr][indexPath.row][@"state"] boolValue]) {
// 关闭附加cell
NSMutableDictionary *dd = dic[indexStr][indexPath.row];
NSString *name = dd[@"name"];
NSMutableDictionary *nameAndStateDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",name,@"name",@"NO",@"state", nil];
switch (indexPath.section) {
case 0:
{
groupArr0[(path.row-1)] = nameAndStateDic;
[groupArr0 removeObjectAtIndex:path.row];
}
break;
case 1:
{
groupArr1[(path.row-1)] = nameAndStateDic;
[groupArr1 removeObjectAtIndex:path.row];
}
break;
case 2:
{
groupArr2[(path.row-1)] = nameAndStateDic;
[groupArr2 removeObjectAtIndex:path.row];
}
break;
case 3:
{
groupArr3[(path.row-1)] = nameAndStateDic;
[groupArr3 removeObjectAtIndex:path.row];
}
break;
case 4:
{
groupArr4[(path.row-1)] = nameAndStateDic;
[groupArr4 removeObjectAtIndex:path.row];
}
break;
case 5:
{
groupArr5[(path.row-1)] = nameAndStateDic;
[groupArr5 removeObjectAtIndex:path.row];
}
break;
default:
break;
}
[_tableView beginUpdates];
[_tableView deleteRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationMiddle];
[_tableView endUpdates];
}else{
// 打开附加cell
NSMutableDictionary *dd = dic[indexStr][indexPath.row];
NSString *name = dd[@"name"];
NSMutableDictionary *nameAndStateDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MainCell",@"cell",name,@"name",@"YES",@"state", nil];
switch (indexPath.section) {
case 0:
{
groupArr0[(path.row-1)] = nameAndStateDic;
NSMutableDictionary *nameAndStateDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"AttachedCell",@"cell",@"YES",@"state", nil];
[groupArr0 insertObject:nameAndStateDic1 atIndex:path.row];
}
break;
case 1:
{
groupArr1[(path.row-1)] = nameAndStateDic;
NSMutableDictionary *nameAndStateDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"AttachedCell",@"cell",@"YES",@"state", nil];
[groupArr1 insertObject:nameAndStateDic1 atIndex:path.row];
}
break;
case 2:
{
groupArr2[(path.row-1)] = nameAndStateDic;
NSMutableDictionary *nameAndStateDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"AttachedCell",@"cell",@"YES",@"state", nil];
[groupArr2 insertObject:nameAndStateDic1 atIndex:path.row];
}
break;
case 3:
{
groupArr3[(path.row-1)] = nameAndStateDic;
NSMutableDictionary *nameAndStateDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"AttachedCell",@"cell",@"YES",@"state", nil];
[groupArr3 insertObject:nameAndStateDic1 atIndex:path.row];
}
break;
case 4:
{
groupArr4[(path.row-1)] = nameAndStateDic;
NSMutableDictionary *nameAndStateDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"AttachedCell",@"cell",@"YES",@"state", nil];
[groupArr4 insertObject:nameAndStateDic1 atIndex:path.row];
}
break;
case 5:
{
groupArr5[(path.row-1)] = nameAndStateDic;
NSMutableDictionary *nameAndStateDic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"AttachedCell",@"cell",@"YES",@"state", nil];
[groupArr5 insertObject:nameAndStateDic1 atIndex:path.row];
}
break;
default:
break;
}
[_tableView beginUpdates];
[_tableView insertRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationMiddle];
[_tableView endUpdates];
}
}
-(void)buttonAction:(UIButton *)sender
{
NSString *string = [NSString stringWithFormat:@"%d",(int)(sender.tag-100)];
//数组selectedArr里面存的数据和表头想对应,方便以后做比较
if ([selectedArr containsObject:string])
{
[selectedArr removeObject:string];
}
else
{
[selectedArr addObject:string];
}
[_tableView reloadData];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
#import <UIKit/UIKit.h>
@interface MainCell : UITableViewCell
@property (strong, nonatomic) UILabel *nameLabel;
@property (strong, nonatomic) UILabel *IntroductionLabel;
@property (strong, nonatomic) UILabel *networkLabel;
@property (strong, nonatomic) UIImageView *Headerphoto;
@property (strong, nonatomic) UIImageView *imageLine;
@end
#import "MainCell.h"
@implementation MainCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// 头像
_Headerphoto = [[UIImageView alloc] initWithFrame:CGRectMake(6*scaleX, 5*scaleY, 50*scaleX, 50*scaleX)];
[self.contentView addSubview:_Headerphoto];
// 名字
_nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(60*scaleX, 5*scaleY, 200*scaleX, 25*scaleX)];
_nameLabel.font = [UIFont systemFontOfSize:15];
[self.contentView addSubview:_nameLabel];
// 简介
_IntroductionLabel = [[UILabel alloc] initWithFrame:CGRectMake(60*scaleX, 28*scaleY, 240*scaleX, 25*scaleX)];
_IntroductionLabel.backgroundColor = [UIColor clearColor];
_IntroductionLabel.textColor = [UIColor lightGrayColor];
_IntroductionLabel.font = [UIFont systemFontOfSize:13];
[self.contentView addSubview:_IntroductionLabel];
// 网络
_networkLabel = [[UILabel alloc] initWithFrame:CGRectMake(290*scaleX, 5*scaleY, 50*scaleX, 25*scaleY)];
_networkLabel.backgroundColor = [UIColor clearColor];
_networkLabel.textColor = [UIColor lightGrayColor];
_networkLabel.font = [UIFont systemFontOfSize:13];
[self.contentView addSubview:_networkLabel];
// 分割线
_imageLine = [[UIImageView alloc] initWithFrame:CGRectMake(60*scaleX, 60*scaleY - 1, (320 - 60)*scaleX, 1)];
[self.contentView addSubview:_imageLine];
}
return self;
}
@end
#import <UIKit/UIKit.h>
@interface DetialTableViewCell : UITableViewCell
@property (strong, nonatomic) UIImageView *imageLine;
@end
#import "DetialTableViewCell.h"
#import "UIButton+initializer.h"
@implementation DetialTableViewCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// 分割线
_imageLine = [[UIImageView alloc] initWithFrame:CGRectMake(60*scaleX, 40*scaleY - 1, (320 - 60)*scaleY, 1)];
[self.contentView addSubview:_imageLine];
UIButton *btn1 = [UIButton initButtonWithFrame:CGRectMake(70*scaleX, 9*scaleY, 50*scaleX, 20*scaleY) Title:@"语音" Target:self Selector:@selector(btnAction:)];
btn1.tag = 100;
UIButton *btn2 = [UIButton initButtonWithFrame:CGRectMake(130*scaleX, 9*scaleY, 50*scaleX, 20*scaleY) Title:@"视频" Target:self Selector:@selector(btnAction:)];
btn2.tag = 200;
UIButton *btn3 = [UIButton initButtonWithFrame:CGRectMake(190*scaleX, 9*scaleY, 50*scaleX, 20*scaleY) Title:@"图片" Target:self Selector:@selector(btnAction:)];
btn3.tag = 300;
UIButton *btn4 = [UIButton initButtonWithFrame:CGRectMake(250*scaleX, 9*scaleY, 50*scaleX, 20*scaleY) Title:@"表情" Target:self Selector:@selector(btnAction:)];
btn4.tag = 400;
[self.contentView addSubview:btn1];
[self.contentView addSubview:btn2];
[self.contentView addSubview:btn3];
[self.contentView addSubview:btn4];
}
return self;
}
- (void)btnAction:(UIButton *)sender
{
switch (sender.tag) {
case 100:
{
NSLog(@"~~~~语音~~~~");
}
break;
case 200:
{
NSLog(@"~~~~视频~~~~");
}
break;
case 300:
{
NSLog(@"~~~~图片~~~~");
}
break;
case 400:
{
NSLog(@"~~~~表情~~~~");
}
break;
default:
break;
}
}
- (void)awakeFromNib {
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
#import <UIKit/UIKit.h>
@interface UIButton (initializer)
/**
* 初始化button
*
* @param frame button的尺寸
* @param target button的目标对象
* @param selector 点击button所触发的方法
* @param image button的背景图片
* @param imagePressed button高亮时的图片
*
* @return button
*/
+ (UIButton *)initButtonWithFrame:(CGRect)frame Target:(id)target Selector:(SEL)selector Image:(NSString *)image ImagePressed:(NSString *)imagePressed;
/**
* 初始化button
*
* @param frame button的尺寸
* @param title button的标题
* @param target button的目标对象
* @param selector 点击button所触发的方法
*
* @return button
*/
+ (UIButton *)initButtonWithFrame:(CGRect)frame Title:(NSString *)title Target:(id)target Selector:(SEL)selector;
@end
#import "UIButton+initializer.h"
@implementation UIButton (initializer)
+ (UIButton *)initButtonWithFrame:(CGRect)frame Target:(id)target Selector:(SEL)selector Image:(NSString *)image ImagePressed:(NSString *)imagePressed
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setFrame:frame];
UIImage *newImage = [UIImage imageNamed:image];
[button setBackgroundImage:newImage forState:0];
UIImage *newPressedImage = [UIImage imageNamed:imagePressed];
[button setBackgroundImage:newPressedImage forState:UIControlStateHighlighted];
[button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
return button;
}
+ (UIButton *)initButtonWithFrame:(CGRect)frame Title:(NSString *)title Target:(id)target Selector:(SEL)selector
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:frame];
[button setTitle:title forState:0];
[button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
return button;
}
@end
pch文件的代码:
#ifndef QQList_PrefixHeader_pch
#define QQList_PrefixHeader_pch
#define scaleX [UIScreen mainScreen].bounds.size.width/320.0
#define scaleY [UIScreen mainScreen].bounds.size.height/568.0
#endif
总结
以上就是在IOS展开三级列表效果示例的全部内容,希望本文的内容对大家IOS时能有所帮助。
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!