MJNIndexView 1.1.1

MJNIndexView 1.1.1

测试已测试
Lang语言 Obj-CObjective C
许可 NOASSERTION
发布上次发布2019年10月

Mat Nuckowski 维护。



  • 作者:
  • matthewfx

iOS - MJNIndexView

MJNIndexView 是一个高度可定制的 UIControl,用于显示 UITableView 的替代索引。我想要模仿 Jeremey Olson 为他们的 Languages 应用设计的 Tapity 索引。我认为他们的索引实现想法非常出色,这是优秀 UX 的最佳示例之一。我希望更多应用都将使用类似的索引而不是通用的索引。

Screenshot Screenshot Screenshot Screenshot

YouTube 视频

IMAGE ALT TEXT HERE

示例代码

@interface MJNIndexTestViewController () <MJNIndexViewDataSource>

@property (nonatomic, strong) MJNIndexView *indexView;
@property (nonatomic, strong) NSMutableArray *sectionArray;
@property (nonatomic, strong) UITableView *tableView;

@end

@implementation MJNIndexTestViewController

- (void)viewDidLoad
{
  [super viewDidLoad];

	// initialise tableView
	self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds]	[self.tableView registerClass:[UITableViewCell
	class]forCellReuseIdentifier:@"cell"];
	self.tableView.dataSource = self;
	self.tableView.delegate = self;
	self.tableView.showsVerticalScrollIndicator = NO;
	[self.view addSubview:self.tableView];

	// initialise MJNIndexView
	self.indexView = [[MJNIndexView alloc]initWithFrame:self.view.bounds];
	self.indexView.dataSource = self;
	self.indexView.fontColor = [UIColor blueColor];
	[self.view addSubview:self.indexView];
}

// two methods needed for MJNINdexView protocol
- (NSArray *)sectionIndexTitlesForMJNIndexView:(MJNIndexView *)indexView
{
	return sectionArray;
}

- (void)sectionForSectionMJNIndexTitle:(NSString *)title atIndex:(NSInteger)index;
{
	[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForItem:0 	inSection:index] atScrollPosition: UITableViewScrollPositionTop 	animated:NO];
}
.
.
.
@end

用法

使用 MJNIndexView 仅需两个文件: MJNindexView.hMJNIndexView.m。将它们都复制到您的 Xcode 项目中。请确保在您的目标中包含 QuartzCore 框架。

您的UIViewController必须实现MJNIndexViewDataSource协议方法。其中第一个方法需要提供所有节标题的索引。第二个方法需要提供一个由用户选择的标题或索引编号。

您可以通过调整20多个参数来自定义MJNIndex的外观和行为。您可以在演示应用中尝试其中大部分参数。

如果您想在将MJNIndexView添加到父视图之后更改索引项或者大多数参数,应使用方法– (void)refreshIndexItems重新计算每个项的位置、大小等。

待办事项

• 优化窗帘淡出效果(当使用非常大的右侧边距值时,其行为可能不正常)。

• 提升老旧设备上的性能

• Cocoapod

致谢

如果您在您的应用中使用了这个控件,请添加一些致谢。

许可证

MIT许可证

版权所有(c)2013 Mateusz Nuckowski (http://mateusz.nuckowski.com)

任何人未经许可从软件及其相关文档文件(“软件”)获取副本的,均可免费在此软件中处理,包括但不限于使用、复制、修改、合并、发布、分发、再许可、出售软件副本的权力,并允许拥有软件的人进行此类操作,前提是满足以下条件

上述版权声明和许可声明应包含在软件的所有副本或实质性部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、针对特定目的的适用性和非侵犯性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负任何责任,不论是在合同、侵权或其他案件,无论是源于、源于或与软件或其使用或其他交易相关。