`
jsntghf
  • 浏览: 2534125 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

可以左右拖动的UITableViewCell

    博客分类:
  • iOS
阅读更多

ZKRevealingTableViewController.h

 

#import <UIKit/UIKit.h>
#import "ZKRevealingTableViewCell.h"

@interface ZKRevealingTableViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource, ZKRevealingTableViewCellDelegate>
@property (nonatomic, retain) ZKRevealingTableViewCell *currentlyRevealedCell;
@end

 

ZKRevealingTableViewController.m

 

#import "ZKRevealingTableViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface ZKRevealingTableViewController () {
	ZKRevealingTableViewCell *_currentlyRevealedCell;
}
@property (nonatomic, retain) NSArray *objects;
@end

@implementation ZKRevealingTableViewController

@synthesize objects;
@dynamic currentlyRevealedCell;

- (void)viewDidLoad {
    [super viewDidLoad];
    
	self.objects = [NSArray arrayWithObjects:@"Right", @"Left", @"Both", @"None", nil];
	self.tableView = (UITableView *)self.view;
	self.tableView.rowHeight = 52.0f;
	self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
}

#pragma mark - Accessors

- (ZKRevealingTableViewCell *)currentlyRevealedCell {
	return _currentlyRevealedCell;
}

- (void)setCurrentlyRevealedCell:(ZKRevealingTableViewCell *)currentlyRevealedCell {
	if (_currentlyRevealedCell == currentlyRevealedCell)
		return;
	
	[_currentlyRevealedCell setRevealing:NO];
	
	if (_currentlyRevealedCell)
		[_currentlyRevealedCell autorelease];
	
	[self willChangeValueForKey:@"currentlyRevealedCell"];
	_currentlyRevealedCell = [currentlyRevealedCell retain];
	[self didChangeValueForKey:@"currentlyRevealedCell"];
}

#pragma mark - ZKRevealingTableViewCellDelegate

- (BOOL)cellShouldReveal:(ZKRevealingTableViewCell *)cell {
	return YES;
}

- (void)cellDidReveal:(ZKRevealingTableViewCell *)cell {
	self.currentlyRevealedCell = cell;
}

- (void)cellDidBeginPan:(ZKRevealingTableViewCell *)cell {
	if (cell != self.currentlyRevealedCell)
		self.currentlyRevealedCell = nil;
}

#pragma mark - UIScrollViewDelegate

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
	self.currentlyRevealedCell = nil;
}

#pragma mark - UITableViewDataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
	return 2;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
	return (section == 0) ? @"Bounce" : @"No Bounce";
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
	return self.objects.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	ZKRevealingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
	
	if (!cell) {
		cell = [[[ZKRevealingTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"] autorelease];
		cell.delegate = self;
		cell.selectionStyle = UITableViewCellSelectionStyleNone;
		
		cell.backView.backgroundColor = [UIColor scrollViewTexturedBackgroundColor];
	}
	
	cell.textLabel.text = [self.objects objectAtIndex:indexPath.row];
	cell.direction = (ZKRevealingTableViewCellDirection)indexPath.row;
	cell.shouldBounce = (BOOL)!indexPath.section;
	
	return cell;	
}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
	NSUInteger row = [indexPath row];
	if (row % 2 == 0) {
		cell.backgroundColor = [UIColor whiteColor];
	} else {
		cell.backgroundColor = [UIColor colorWithRed:0.892 green:0.893 blue:0.892 alpha:1.0];
	}	
	cell.contentView.backgroundColor = cell.backgroundColor;
}

@end

 

效果图:


分享到:
评论

相关推荐

    swift-UITableViewCell左右滑动出现更多按钮按钮高度自定义

    然后,为了实现左右滑动的效果,我们可以利用UITableViewCell的子视图,如添加两个隐藏的UIButton,分别代表左滑和右滑的按钮。这些按钮在用户滑动时会显示出来。关键在于监听滑动手势,这可以通过手势识别器...

    UITableViewCell左右左右滑动删除

    在iOS开发中,`UITableViewCell` 是用于...通过以上步骤,你就可以在你的iOS应用中实现 `UITableViewCell` 的左右滑动删除功能,提升用户界面的交互性和可用性。在实际开发中,可以根据项目需求进行适当的定制和扩展。

    iOS、UITableViewCell、自定义

    1. 创建UITableViewCell子类:通过继承UITableViewCell,我们可以添加自定义的UI元素,如UILabel、UIImageView、UIButton等,并在子类中重写layoutSubviews方法来布局这些元素。 2. 注册Cell:在UITableView的...

    IOS源码应用Demo-UITableViewCell 视图扩展.zip

    通过分析和学习这个Demo,开发者不仅可以掌握自定义UITableViewCell的方法,还能了解到如何将理论知识应用于实际项目,这对于毕业设计和论文写作是非常有价值的。同时,这样的实践也有助于提升问题解决和代码组织的...

    swift-UITableViewCell动画效果

    通过继承或组合这些动画,我们可以为`UITableViewCell`添加独特的视觉表现。例如,当用户滚动到某个特定的cell时,可以触发一个炫酷的展开或折叠动画,以突出显示重要的信息。 为了使用`MXAnimationCell`库,首先...

    自定义UITableViewCell。实现各种样式的表格输入界面ios源代码设计资料

    5. **自定义行为**:如果需要,还可以扩展`UITableViewCell`的子类,添加自定义的行为和逻辑。例如,可以添加计算或验证方法,或者实现特定的动画效果。 关于InAppSettingsKit,这是一个开源库,用于在应用内部管理...

    动态计算UITableViewCell高度详解

    通过以上步骤,我们可以实现动态计算UITableViewCell的高度,使UITableView更好地适应各种内容。在实际项目中,可能还需要结合具体业务需求进行调整,比如处理图片加载、异步计算等复杂情况。阅读博文([链接]...

    UITableViewCell带图片点击

    这个`UIImageView`可以通过代码创建或者在Storyboard中拖拽添加。确保为`UIImageView`设置合适的约束以适应不同屏幕尺寸。 ```swift class CustomTableViewCell: UITableViewCell { @IBOutlet weak var imageView:...

    swift-利用原始UITableViewcell强大的自适应性能改造UITableViewcell

    7. 布局扩展:如果原始的UITableViewCell样式仍无法满足需求,可以考虑使用UIStackView或者自定义UIComponent来增强布局能力,但仍应尽量利用现有系统组件的自适应特性,避免过度自定义。 通过以上方法,我们可以在...

    UITableViewCell的reuse(修正)

    6. **自定义单元格**:如果需要自定义单元格,可以创建一个新的UITableViewCell子类,或者使用XIB/NIB文件定义界面布局。别忘了在注册时使用这个子类或NIB。 7. **多类型单元格**:对于包含多种类型的表格,可以...

    UITableViewCell根据内容自动高度

    通过以上步骤,我们可以实现UITableViewCell根据内容自动调整高度的功能。这不仅可以优化用户体验,还能避免手动计算高度带来的麻烦。在实际开发中,还要注意性能优化,如合理设置`estimatedRowHeight`以平衡滚动...

    ios-UITableViewCell折叠效果.zip

    我们可以为UITableViewCell添加一个扩展,包含一个BOOL变量来跟踪cell的状态(展开或折叠),并实现`touchesBegan(_:with:)`和`touchesEnded(_:with:)`方法。当用户点击cell时,切换该状态,并调用UITableView的`...

    代码实现 UITableView与UITableViewCell

    2. **UITableViewCell的创建与重用**: 单元格可以通过重用标识符在屏幕外预先创建,以提高性能。通过`dequeueReusableCell(withIdentifier:)`方法获取或创建单元格,避免每次都新建导致性能下降。 3. **数据源方法*...

    UITableViewCell自适应高度

    `UITableViewCell` 是`UITableView`中的基本单元,每个单元格可以显示一行数据。在设计用户界面时,为了提供良好的用户体验,我们希望`UITableViewCell`的高度能够根据内容自动调整,这就是所谓的`UITableViewCell`...

    优化UITableViewCell滚动性能demo

    然而,如果不对UITableViewCell的滚动性能进行优化,可能会导致滚动卡顿,影响用户体验。本Demo“优化UITableViewCell滚动性能”正是针对这一问题进行探讨和实践。 首先,我们来了解为什么UITableViewCell滚动会变...

    UITableViewCell的四种不同的定制单元格方式

    在Xcode的Interface Builder中,可以通过Storyboard来设计和定制UITableViewCell。首先,选择UITableView,然后在属性检查器中设置cell的Identifier。接着,可以直接在Table View Cell上添加所需的UI元素,如...

    ios7自定义UITableViewCell

    在Interface Builder中,你可以拖拽并设置所需的UI控件,然后将它们连接到你的CustomTableViewCell类中的IBOutlet属性。 2. 如果使用纯代码设计,你需要在`layoutSubviews`方法中设置子视图的位置和大小。 步骤三:...

    iOS8 tableview uitableviewcell内容自适应

    在iOS8中,苹果引入了一项新特性,使得UITableViewCell的内容可以自动调整大小,这一特性被称为“Self Sizing Cells”。这一功能极大地简化了开发者在处理不同内容长度时的布局工作,提高了用户体验。 首先,我们要...

    iOS通过代码创建高度不一致的UITableViewCell

    通过以上步骤,你可以创建一个能够根据内容动态调整高度的UITableViewCell。这种设计模式在处理新闻、微博、评论等信息流场景中非常常见,使得界面更具有可读性和美观性。在实际开发中,还需要根据具体需求进行调整...

    使用AutoLayout动态计算UITableViewCell高度

    确保所有的内容视图都与其父视图有顶部、底部、左右边距约束,这样它们就能根据内容自动扩展。 3. **启用estimatedRowHeight和rowHeight**: 在UITableView上设置`estimatedRowHeight`和`rowHeight`属性。`...

Global site tag (gtag.js) - Google Analytics