iOS中大流中的自定义cell 技术分享

简介:

AppDelegate.m指定根视图

[objc]  view plain  copy
  1. self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[[RootTableViewController alloc] initWithStyle:UITableViewStylePlain]];  
//根视图

RootTableViewController.m

[objc]  view plain  copy
  1. #import "RootTableViewController.h"  
  2. #import "TestCell.h"  
  3. #import "TestModel.h"  
  4.   
  5. @interface RootTableViewController ()  
  6.   
  7. @property (nonatomicstrongNSMutableArray *datasourceArray;  
  8.   
  9. @end  
  10.   
  11. @implementation RootTableViewController  
  12.   
  13. - (void)viewDidLoad  
  14. {  
  15.     [super viewDidLoad];  
  16.       
  17.     self.datasourceArray = [NSMutableArray array];  
  18.       
  19.     [self.tableView registerClass:[TestCell class] forCellReuseIdentifier:@"cell"];  
  20.       
  21.     for (int i = 0; i < 50; i++) {  
  22.         TestModel *model = [TestModel new];  
  23.         model.isShow = NO;  
  24.         [self.datasourceArray addObject:model];  
  25.     }  
  26.   
  27.       
  28. }  

#pragma mark - Table view data source

数据源方法
[objc]  view plain  copy
  1. #pragma mark - Table view data source  
  2.   
  3. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView  
  4. {  
  5.     return 1;  
  6. }  
  7.   
  8. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  
  9. {  
  10.     // Return the number of rows in the section.  
  11.     return self.datasourceArray.count;  
  12. }  
  13.   
  14.   
  15. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  16. {  
  17.     TestCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];  
  18.       
  19.     TestModel *model = self.datasourceArray[indexPath.row];  
  20.       
  21.     if (model.isShow) {  
  22.           
  23.         cell.label.text = @"展示view";  
  24.         [cell addView];  
  25.     } else {  
  26.         cell.label.text = @"什么都没有";  
  27.         [cell removeView];  
  28.     }  
  29.   
  30.       
  31.     return cell;  
  32. }  

返回高

[objc]  view plain  copy
  1. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath  
  2. {  
  3.     TestModel *model = self.datasourceArray[indexPath.row];  
  4.     if (model.isShow) {  
  5.         return 300;  
  6.     } else {  
  7.         return 100;  
  8.     }  
  9. }  
点击cell触发的方法

[objc]  view plain  copy
  1. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  
  2. {  
  3.     TestModel *model = self.datasourceArray[indexPath.row];  
  4.     model.isShow = !model.isShow;  
  5.     [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];  
  6.       
  7.     [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];  
  8. }  
准备一个自定义cell

[objc]  view plain  copy
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface TestCell : UITableViewCell  
  4.   
  5. @property (nonatomicstrongUILabel *label;  
  6. @property (nonatomicstrongUIView *redView;  
  7.   
  8. - (void)addView;  
  9. - (void)removeView;  
  10.   
  11. @end  
  12.   
  13. #import "TestCell.h"  
  14.   
  15. @implementation TestCell  
  16.   
  17. - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier  
  18. {  
  19.     if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {  
  20.         [self addAllViews];  
  21.     }  
  22.     return self;  
  23. }  
  24.   
  25. - (void)addAllViews  
  26. {  
  27.     self.label = [[UILabel alloc] initWithFrame:CGRectMake(00, [UIScreen mainScreen].bounds.size.width100)];  
  28.     self.label.backgroundColor = [UIColor yellowColor];  
  29.     [self addSubview:self.label];  
  30.       
  31.     self.redView = [[UIView alloc] initWithFrame:CGRectMake(0100, [UIScreen mainScreen].bounds.size.width200)];  
  32.     self.redView.backgroundColor = [UIColor redColor];  
  33.       
  34. }  
  35.   
  36. - (void)addView  
  37. {  
  38.     [self addSubview:self.redView];  
  39. }  
  40.   
  41. - (void)removeView  
  42. {  
  43.     [self.redView removeFromSuperview];  
  44. }  
准备一个model类

[objc]  view plain  copy
  1. #import <Foundation/Foundation.h>  
  2.   
  3. @interface TestModel : NSObject  
  4.   
  5. @property (nonatomic, assign) BOOL isShow;  
  6.   
  7. @end  

最终效果如下:




有好的建议和问题可微博私信:http://weibo.com/hanjunqiang

原文地址:http://blog.csdn.net/qq_31810357/article/details/49611255

相关文章
|
7月前
|
iOS开发 UED
实现一个自定义的iOS动画效果
【4月更文挑战第9天】本文将详细介绍如何在iOS平台上实现一个自定义的动画效果。我们将通过使用Core Animation框架来实现这个动画效果,并展示如何在不同的场景中使用它。文章的目标是帮助读者理解如何使用Core Animation框架来创建自定义动画,并提供一个简单的示例代码。
53 1
|
25天前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
46 1
|
2月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
50 5
|
2月前
|
Swift iOS开发 UED
实现一个自定义的iOS动画效果
本文介绍如何使用Swift和UIKit在iOS应用中实现一个自定义按钮动画,当按钮被点击时,其颜色从蓝色渐变为绿色,形状从圆形变为椭圆形,释放后恢复原状。通过UIView动画方法实现这一效果,代码示例展示了动画的平滑过渡和状态切换,有助于提升应用的视觉体验和用户交互。
51 1
|
3月前
|
Swift iOS开发 UED
揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【9月更文挑战第5天】本文通过具体案例介绍如何在iOS应用中使用Swift与UIKit实现自定义按钮动画,当用户点击按钮时,按钮将从圆形变为椭圆形并从蓝色渐变到绿色,释放后恢复原状。文中详细展示了代码实现过程及动画平滑过渡的技巧,帮助读者提升应用的视觉体验与特色。
63 11
|
4月前
|
Swift iOS开发 UED
【绝妙创意】颠覆你的视觉体验!揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【8月更文挑战第13天】本文通过一个具体案例,介绍如何使用Swift与UIKit在iOS应用中创建独特的按钮动画效果。当按钮被按下时,其形状从圆形变化为椭圆形,颜色则从蓝色渐变为绿色;释放后,动画反向恢复原状。利用UIView动画方法及弹簧动画效果,实现了平滑自然的过渡。通过调整参数,开发者可以进一步优化动画体验,增强应用的互动性和视觉吸引力。
53 7
|
7月前
|
iOS开发
iOS UITableViewCell刷新某些行的cell或section
iOS UITableViewCell刷新某些行的cell或section
76 0
|
API iOS开发
iOS 自定义转场动画 UIViewControllerTransitioning
iOS 自定义转场动画 UIViewControllerTransitioning
96 0
|
8天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
下一篇
无影云桌面