效果图如下:
#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时能有所帮助。
【IOS展开三级列表效果示例】相关文章:
★ iOS开发之使用Storyboard预览UI在不同屏幕上的运行效果