在你的自定义的tableviewcell的m文件里加入下面方法:
- -(void)layoutSubviews
- {
- [super layoutSubviews];
- CGRect frame = self.backgroundView.frame;
- frame.origin.x += 18;
- frame.size.width -= 36;
- self.backgroundView.frame = frame;
- frame = self.contentView.frame;
- frame.origin.x += 18;
- frame.size.width -= 36;
- self.contentView.frame = frame;
- }
重写了tableviewcell的layoutSubviews的方法,调整一下backgroundview和contentview的frame就行了。
NSString *CellIdentifier = [ [ NSString alloc ] initWithString: @"Frank" ];
UITableViewCell *cell = [ [ [ UITableViewCell alloc ]
initWithFrame: CGRectZero
reuseIdentifier: CellIdentifier
] autorelease
];
然后你可以为每一个cell设置不同的风格
(1) 显示文本: cell.text = @"Frank's Table Cell";
(2) 对齐: cell.textAlignment = UITextAlignmentLeft;UITextAlignmentLeft 默认是左对齐
UITextAlignmentRight 右对齐
UITextAlignmentCenter 中对齐
(3) 字体和尺寸:
UIFont *myFont = [ UIFont fontWithName: @"Arial" size: 18.0 ];
cell.font = myFont;
//系统字体
UIFont *mySystemFont = [ UIFont systemFontOfSize: 12.0 ];
UIFont *myBoldSystemFont = [ UIFont boldSystemFontOfSize: 12.0 ];
UIFont *myItalicSystemFont = [ UIFont italicSystemFontOfSize: 12.0 ];
(4) 颜色
#import <UIKit/UIColor.h>
//文本颜色cell.textColor = [ UIColor redColor ];
//当前选择项的颜色cell.selectedTextColor = [ UIColor blueColor ];
(5) 图像
//从你应用程序目录下的文件创建一个image
cell.image = [ UIImage imageNamed: @"cell.png" ];//当前选中项的图形
cell.selectedImage = [ UIImage imageNamed: @"selected_cell.png" ];
可以修改table保准行高来适应你的图形高度- (id)init
{
self = [ super init ];
if (self != nil) {
self.tableView.rowHeight = 65;
}
return self;
}
你也可以为每一个cell定义不同的高度- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([ indexPath indexAtPosition: 1 ] == 0)
return 65.0;
else
return 40.0;
(6)选中项的风格cell.selectionStyle = UITableViewCellSelectionStyleBlue;
UITableViewCellSelectionStyleBlue 默认选中项是蓝色
UITableViewCellSelectionStyleGray 灰色
UITableViewCellSelectionStyleNone 没有变化
(7)标签 (labels)
在偏移量100x0处创建一个尺寸50x50 label:
UILabel *label = [ [ UILabel alloc ] initWithFrame: CGRectMake(100.0, 0.0, 50.0, 50.0) ];
label.text = @"Label Text";
label.textAlignment = UITextAlignmentLeft;
label.textColor = [ UIColor redColor ];
label.font = [ UIFont fontWithName: @"Arial" size: 10.0 ];
标签label可以设置文本阴影,甚至可以定义阴影的偏移:
label.shadowColor = [ UIColor grayColor ];
label.shadowOffset = CGSizeMake(0, -1);
高亮是的颜色:
label.highlightedTextColor = [ UIColor blackColor ];标签的背景色:
label.backgroundColor = [ UIColor blueColor ];
把标签加到cell里(8) 附件
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
UITableViewCellAccessoryNone | 没有附件 |
UITableViewCellAccessoryDisclosureIndicator | 黑色向右的箭头 |
UITableViewCellAccessoryDetailDisclosureButton | 蓝色附件按钮 |
UITableViewCellAccessoryCheckmark | 复选框,支持选择 |
7.3 实现多选
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Selected section %d, cell %d",
[ indexPath indexAtPosition: 0 ], [ indexPath indexAtPosition: 1 ]);
//获的当前选择项
UITableViewCell *cell = [ self.tableView cellForRowAtIndexPath: indexPath ];
//显示复选框
if (cell.accessoryType == UITableViewCellAccessoryNone)
cell.accessoryType = UITableViewCellAccessoryCheckmark;
else
cell.accessoryType = UITableViewCellAccessoryNone;
}
7.4 编辑和删除
在允许用户删除和编辑的时候,每一个cell左边会显示一个红色删除图标
[ self.tableView setEditing:YES animated:YES ];关闭编辑的时候,table顶部会显示一个Edit导航条
[ self.tableView setEditing: NO animated: YES ];
在编辑过程中,如果用户要删除该项,会弹出一个删除确认框. 确认后调UITableViewDataSource类的commitEditingStyle方法来通知你的应用程序, 然后你可以从你的底层数据源里删除该项,并通知table view删除该行.- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle) editingStyle
forRowAtIndexPath:(NSIndexPath *) indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
NSLog(@"Deleted section %d, cell %d", [ indexPath indexAtPosition: 0 ], [ indexPath indexAtPosition: 1 ]);
NSMutableArray *array = [ [ NSMutableArray alloc ] init ];
[ array addObject: indexPath ];
[ self.tableView deleteRowsAtIndexPaths: array
withRowAnimation: UITableViewRowAnimationFade
];
}
}
通过传递一个数组给deleteRowsAtIndexPaths方法, 可以删除一行或多行.
withRowAnimation至此下列预定义的删除动画
7.5 重新加载表
当你的数据变了的时候,你可以重新加载整个表
[ self.tableView reloadData ];
7.6 TableDemo: Simple File Browser
这个例子列表你应用程序home目录里的文件和目录
(1) TableDemo main (main.m)
#import <UIKit/UIKit.h> int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, @"TableDemoAppDelegate"); [pool release]; return retVal; } |
(2)TableDemo application delegate
prototypes (TableDemoAppDelegate.h)
#import <UIKit/UIKit.h> @class TableDemoViewController; @interface TableDemoAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; TableDemoViewController *viewController; UINavigationController *navigationController; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet TableDemoViewController *viewController; @end |
(TableDemoAppDelegate.m)
#import "TableDemoAppDelegate.h" #import "TableDemoViewController.h" @implementation TableDemoAppDelegate @synthesize window; @synthesize viewController; - (void)applicationDidFinishLaunching:(UIApplication *)application { CGRect screenBounds = [ [ UIScreen mainScreen ] bounds ]; self.window = [ [ [ UIWindow alloc ] initWithFrame: screenBounds ] autorelease ]; viewController = [ [ TableDemoViewController alloc ] init ]; navigationController = [ [ UINavigationController alloc ] init WithRootViewController: viewController ]; [ window addSubview: [ navigationController view ] ]; [ window makeKeyAndVisible ]; } - (void)dealloc { [viewController release]; [window release]; [super dealloc]; } @end |
(3) TableDemo view controller
prototype (TableDemoViewController.h)
#import <UIKit/UIKit.h> @interface TableDemoViewController : UITableViewController { NSMutableArray *fileList; } - (void) startEditing; - (void) stopEditing; - (void) reload; @end |
(TableDemoViewController.m)
#import "TableDemoViewController.h" @implementation TableDemoViewController - (id)init { self = [ super init ]; if (self != nil) { [ self reload ]; self.navigationItem.rightBarButtonItem = [ [ [ UIBarButtonItem alloc ] initWithBarButtonSystemItem: UIBarButtonSystemItemEdit target: self action: @selector(startEditing) ] autorelease ]; self.navigationItem.leftBarButtonItem = [ [ [ UIBarButtonItem alloc ] initWithTitle:@"Reload" style: UIBarButtonItemStylePlain target: self action:@selector(reload) ] autorelease ]; } return self; } - (void) stopEditing {
[ self.tableView setEditing: NO animated: YES ];
self.navigationItem.rightBarButtonItem
= [ [ [ UIBarButtonItem alloc ]
initWithBarButtonSystemItem: UIBarButtonSystemItemEdit
target: self
action: @selector(startEditing) ] autorelease ];
}
- (void) reload {
NSDirectoryEnumerator *dirEnum;
NSString *file;
fileList = [ [ NSMutableArray alloc ] init ];
dirEnum = [ [ NSFileManager defaultManager ] enumeratorAtPath:
NSHomeDirectory()
];
while ((file = [ dirEnum nextObject ])) {
[ fileList addObject: file ];
}
[ self.tableView reloadData ];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsIn
Section:(NSInteger)section {
return [ fileList count ];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRow
AtIndexPath:(NSIndexPath *)indexPath {
NSString *CellIdentifier = [ fileList objectAtIndex:
[ indexPath indexAtPosition: 1 ]
];
UITableViewCell *cell = [ tableView
dequeueReusableCellWithIdentifier: CellIdentifier
];
if (cell == nil) {
cell = [ [ [ UITableViewCell alloc ] initWithFrame:
CGRectZero reuseIdentifier: CellIdentifier ] autorelease
];
cell.text = CellIdentifier;
UIFont *font = [ UIFont fontWithName: @"Courier" size: 12.0 ];
cell.font = font;
}
return cell;
}
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle) editingStyle
forRowAtIndexPath:(NSIndexPath *) indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
UITableViewCell *cell = [ self.tableView cellForRowAtIndexPath:
indexPath ];
for(int i = 0; i < [ fileList count ]; i++) {
if ([ cell.text isEqualToString: [ fileList objectAtIndex: i ] ]) {
[ fileList removeObjectAtIndex: i ];
}
}
NSMutableArray *array = [ [ NSMutableArray alloc ] init ];
[ array addObject: indexPath ];
[ self.tableView deleteRowsAtIndexPaths: array
withRowAnimation: UITableViewRowAnimationTop
];
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAt
IndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [ self.tableView cellForRowAtIndexPath: indexPath ];
UIAlertView *alert = [ [ UIAlertView alloc ] initWithTitle: @"File Selected"
message: [ NSString stringWithFormat: @"You selected the file '%@'",
cell.text ]
delegate: nil
cancelButtonTitle: nil
otherButtonTitles: @"OK", nil
];
[ alert show ];
}
- (void)loadView {
[ super loadView ];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterface
Orientation)interfaceOrientation {
return YES;
}
- (void)didReceiveMemoryWarning {
[ super didReceiveMemoryWarning ];
}
- (void)dealloc {
[ fileList release ];
[ super dealloc ];
}
@end
|
转载自:http://blog.sina.com.cn/s/articlelist_1654117677_0_1.html(这个作者还有很多关于tableview的使用指南,赞一个!!!用到常看看)
相关推荐
在iOS应用开发中,UITableView是一种常用的UI组件,用于展示列表数据。它允许用户滚动查看多个行项目,并且可以根据需要进行高度自定义。本篇文章将深入探讨如何在代码中实现自定义UITableView,以及在开发过程中应...
在iOS开发中,UITableView是一种常用的数据展示控件,用于显示多行可滚动的数据。然而,在实际应用中,我们经常遇到的一个问题是如何实现UITableView的高度自适应,即让每一行cell的高度根据其内容动态调整。本教程...
【标题】:“iOS 常用的知识点总结” 在iOS开发中,Swift是主要的编程语言,它以其简洁、安全的语法深受开发者喜爱。这里,我们聚焦于“iOS常用的知识点总结”,通过作者fengzhihao123的项目FZHKit,我们可以深入...
总结以上知识点,可以得出本书详细覆盖了以下几个关键点: 1. 加入苹果iOS开发者计划和理解其流程。 2. 安装和配置Xcode 5及iOS 7 SDK。 3. 创建基础iOS 7应用的步骤和遇到常见问题的处理方法。 4. 测试和适配应用...
描述中提到了“各种传值方法”,“json和xml的解析方法”,“网络异步多线程请求”,“文件IO”以及“数据库操作”,“UITableView的使用总结”。让我们逐一深入探讨这些知识点。 1. **传值方法**:在iOS应用中,...
总结来说,这个项目的核心知识点包括: - `UICollectionView`和`UITableView`的组合使用 - `UICollectionViewCell`与`UITableViewCell`的定制 - 视图控制器中处理点击事件和视图动态显示的逻辑 - 自定义布局和Auto ...
1. **UITableView**: UITableView是iOS应用中常用的一个控件,用于显示列表或表格数据。在这个案例中,它被用来呈现用户与聊天机器人之间的对话历史。通过连接storyboard中的UITableView到ViewController,可以实现...
总结起来,这个源码项目展示了如何结合 UIPickerView 和 UITableView 实现用户交互和数据同步,这对于开发 iOS 应用中常见的表单界面非常有用。通过学习和理解这个示例,开发者可以更好地掌握 iOS UI 组件间的协同...
UITableView是iOS开发中最常用的控件之一,用于呈现列表或表格数据。在这个项目中,UITableView被用来展示不同的社交媒体平台,比如微信、微博、Facebook、Twitter等。每个平台会被表示为一个单元格(cell),用户...
总结起来,"ios-swift 3 tableview cell 自适应文字展开动画"这个主题涵盖了Swift开发中UITableView的自定义、事件处理、动画效果以及性能优化等多个知识点,是提升iOS应用用户体验的重要技巧。通过实际项目实践,...
这份"iOS开发总结"文档可能涵盖了从基础概念到高级技术的各种知识点,旨在帮助开发者提升技能和解决问题。 首先,iOS开发主要基于Apple的Swift编程语言,这是一种现代化、高性能的语言,具有安全性和易于读写的特点...
总结来说,"天气TableView"项目涵盖了`UITableView`的使用、网络请求、JSON解析、数据源管理和用户交互等多个知识点。通过这个项目,开发者不仅可以提升iOS应用开发技能,还能深入理解数据驱动UI的设计理念和网络...
在Objective-C中代码混编涉及将C语言代码嵌入到Objective-C程序中,而代码中的字符串换行则常用反斜杠 "\" 来实现。此外,不要在代码中调用[super release],因为它是自动完成的。判断一个字符串是否包含另一个字符...
数组是一种常用的数据结构,用于存储一系列相同类型的对象。在iOS开发中,数组可以用来存储用户信息、设置项等,然后遍历数组来动态创建视图。这种方法灵活且高效,尤其适用于界面元素数量不固定或可能变化的情况。 ...
- **数组**:存储表视图数据的常用数据结构。 ##### 第四部分:“定制UITableView表视图单元格” - **关键技术点**: - **自定义单元格**:通过创建自定义UITableViewCell子类来增强UI。 - **Property和Outlet**...
### IOS 开发总结知识点 #### Xcode 快捷键 Xcode 提供了一系列快捷键来提高开发者的工作效率。例如,使用 `command + shift + L` 可以快速打开项目中的库面板,`command + shift + O` 可以快速打开类文件,而 `...
在iOS应用开发中,日期选择器(Date Picker)是一个常用组件,它允许用户方便地选取特定日期或时间。本文将详细讲解iOS中的日期选择器,尤其是`MZDayPicker`这个库,以及与ISO日期格式相关的知识。 首先,我们来...
在iOS开发中,创建一个高仿版QQ的最新界面是一项挑战性的任务,涉及到多个关键知识点。这个"ios-高仿版QQ最新版.zip"压缩包很可能是包含了一个开发者尝试模仿QQ最新界面的代码和资源文件。让我们深入探讨一下在这个...