UIKitHelper 是一组 UIKit 类的集合,使得一些常见的视图行为易于实现,如轻触背景隐藏键盘、无限滚动视图等。
ISPageScrollView 是一个针对大量页面显示优化的 UIScrollView 子类。它使用懒加载机制来保持内存中只有前几个页面和后几个页面,从而最小化内存使用。
id<ISPageScrollViewDataSource> dataSource: 如 UITableViewDataSource,它从数据源对象请求每个页面上显示的视图。
NSInteger numberOfReusablePages: 内存中维护的页数。这个数字应该是奇数(例如:5 = 当前显示页面 + 2 个前面的页面 + 2 个后面的页面)
NSInteger numberOfPages: 总页数
NSMutableDictionary readonly scrollViewAvailablePages: 这是一个存储内存中页面视图的字典。字典的键是页码索引的 NSNumbers。每个键的值是一个 UIView 对象。
它可以在 xcode 中像 UIScollView 一样创建,也可以以编程方式创建。
ISPageScrollView *pageScrollView = [[ISPageScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
pageScrollView.dataSource = self;
pageScrollView.numberOfPages = 10;
pageScrollView.numberOfReusableViews = 5;
[pageScrollView displayPage:0];
您还需要像 UITableView 一样实现数据源方法,以便页面滚动视图知道显示什么。
@interface ViewController () <ISPageScrollViewDataSource>
@end
@implementation ViewController
…
#pragma mark - ISPageScrollViewDataSource
- (UIView *)viewForScrollView:(UIScrollView *)scrollView Page:(NSInteger)pageIndex
{
UIView *pageView = [[UIView alloc] initWithFrame:scrollView.frame];
pageView.backgroundColor = [UIColor colorWithRed:pageIndex * 10 / 255.0 green:pageIndex * 10 / 255.0 blue:pageIndex * 10 / 255.0 alpha:1.0];
return pageView;
}
…
@end
AutoHideKeyboardViewController 是 UIViewController 的子类,它启用了轻触背景隐藏键盘的行为。
要使您的 viewcontroller 在背景轻触时隐藏键盘,只需两步。
步骤 1: 使您的 viewcontroller 成为 AutoHideKeyboardViewController 的子类而不是 UIViewController
#import "AutoHideKeyboardViewController.h"
@interface ViewController : AutoHideKeyboardViewController
步骤 2: 如果您在您的页面上有任何 UITextView 或 UITextField,将它们的代理设置为您的 viewcontroller。
就是这样!
用法和表现与 AutoHideKeyboardViewController 相同。这是为 UITableView 实现按背景缩小键盘的行为。
UIKitHelper 在MIT许可下可用。有关更多信息,请参阅LICENSE文件。