用于 iOS 的冻结窗口效果视图。
就像 Office Excel 一样。
注意
如果这个 GIF(3.7 MB) 看起来不合适,请刷新。
只需将 pod 'DQKFreezeWindowView'
添加到 Podfile 并运行 pod install
。
就像使用
UITableView
一样使用DQKFreezeWindowView
,它相似但功能更强大。
在您想要使用的地方导入 #import "DQKFreezeWindowView.h"
。
初始化 freezeWindowView
DQKFreezeWindowView *freezeWindowView = [[DQKFreezeWindowView alloc] initWithFrame:frame];
[self.view addSubview:freezeWindowView];
freezeWindowView.dataSource = self;
freezeWindowView.delegate = self;
注意
顶端为 sectionCell,左侧为 rowCell。
![]()
部分实现(dataSource)
- (NSInteger)numberOfSectionsInFreezeWindowView:(DQKFreezeWindowView *)freezeWindowView {
return 100;
}
- (NSInteger)numberOfRowsInFreezeWindowView:(DQKFreezeWindowView *)freezeWindowView {
return 100;
}
- (DQKMainViewCell *)freezeWindowView:(DQKFreezeWindowView *)freezeWindowView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *mainCell = @"mainCell";
DQKMainViewCell *mainCell = [freezeWindowView dequeueReusableMainCellWithIdentifier:mainCell forIndexPath:indexPath];
if (mainCell == nil) {
mainCell = [[DQKMainViewCell alloc] initWithStyle:DQKMainViewCellStyleDefault reuseIdentifier:calendarCell];
mainCell.title = @"mainCell";
}
return mainCell;
}
- (DQKSectionViewCell *)freezeWindowView:(DQKFreezeWindowView *)freezeWindowView cellAtSection:(NSInteger)section {
static NSString *sectionCell = @"sectionCell";
DQKSectionViewCell *sectionCell = [freezeWindowView dequeueReusableSectionCellWithIdentifier:dayCell forSection:section];
if (sectionCell == nil) {
sectionCell = [[DQKSectionViewCell alloc] initWithStyle:DQKSectionViewCellStyleDefault reuseIdentifier:dayCell];
sectionCell.title = @"sectionCell";
}
return sectionCell;
}
- (DQKRowViewCell *)freezeWindowView:(DQKFreezeWindowView *)freezeWindowView cellAtRow:(NSInteger)row {
static NSString *rowCell = @"rowCell";
DQKRowViewCell *rowCell = [freezeWindowView dequeueReusableRowCellWithIdentifier:timeCell forRow:row];
if (rowCell == nil) {
rowCell = [[DQKRowViewCell alloc] initWithStyle:DQKRowViewCellStyleDefault reuseIdentifier:timeCell];
rowCell.title = @"rowCell";
}
return rowCell;
}
部分实现(delegate)
- (void)freezeWindowView:(DQKFreezeWindowView *)freezeWindowView didSelectIndexPath:(NSIndexPath *)indexPath {
NSString *message = [NSString stringWithFormat:@"Click at section: %ld row: %ld",(long)indexPath.section,(long)indexPath.row];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"You did a click!" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alertView show];
}
注意:更多信息请参阅 DQKFreezeWindowViewExample 和 DQKFreezeWindowViewDemo。我更喜欢 DQKFreezeWindowViewDemo,它很有趣。
您可以使用它来
右边的图片是 日历 截图。当您使用日历时,在垂直方向滚动视图后,不能立即在水平方向滚动视图,这像一个 Bug。
更多样式可以在项目的 *.h 文件中查看。
如果您对我的项目感兴趣,可以查看 OtherSource。我放了一部分实现。
一篇文章(中文)。
如果您有任何建议或问题,请提出问题或通过微博 @靛青K 进行讨论。我需要您的帮助 ^_^。
此代码按照 MIT 许可协议的条款和条件进行分发。