一款类似于TweetBot的通知组件,适用于iOS。
首先请注意,在3.0版中,API已进行了更改。为了避免废弃和复杂化API,决定替换一些方法。由于NoticeView是一个非常小的库,因此影响应该是最小的,代码也易于适应。
为什么更改?在3.0版之前,由于通知类目前的结构,定制外观和感觉相当困难。这个版本简化了这项任务,提高了可访问性,并增强了触摸以取消操作的功能。
以下是3.0版中引入的更改简介
鸣谢:感谢@blakewatters抽出时间重构、文档化和清理代码。
从2.4版开始,任何通知都可以关联一个完成块。当通知已取消时,该块将被调用(适用于粘性和非粘性通知)
WBErrorNoticeView *notice = [WBErrorNoticeView errorNoticeInView:self.view title:NSLocalizedString(@"Signup Error", nil) message:NSLocalizedString(@"You need to fill out all entries in this screen to signup.", nil)];
notice.sticky = YES;
notice.dismissedBlock = ^{
NSLog(@"The notice has been dismissed!");
};
从2.3.1版开始,任何具有'粘性'属性的通知都可以随时取消。例如,当检测到特定事件时,只需在准备好取消通知时在通知上调用'dismissNotice'即可。
[myNotice dismissNotice];
查看示例项目,了解其操作。
有些用户询问“粘性”是否可以是任何通知视图的属性。好了,我很高兴地报告,从2.3版本开始,所有通知类型都可以设置为粘性。使用方式遵循常规模式,只是这次我们将“粘性”属性相应地设置。
WBErrorNoticeView *notice = [WBErrorNoticeView errorNoticeInView:self.view title:@"Network Error" message:@"Check your network connection."];
notice.sticky = YES;
[notice show];
2.1新增了一种不同类型的通知:粘性。正如其名所示,该通知将保持可见,直到用户点击以 dismiss 它。使用方式遵循错误和成功通知模式。
WBStickyNoticeView *notice = [WBStickyNoticeView stickyNoticeInView:self.view title:@"7 New Tweets."];
[notice show];
1.0版本的行为是“发射并遗忘”。调用 showErrorNoticeInView 或 showSuccessNoticeInView 将显示通知,但却无法保留以备后用。2.0版本允许开发者实例化一个通知,进行自定义(可选),并显示。不仅能够保留,还可以随时进行自定义,比如使用不同的标题和消息。哦,对了……它也做得更干净利落。
由于2.0版本更灵活,我已经删除了老版本的示例,并使用新的API替换了它们。请注意,旧API仍然存在,以实现向后兼容。
显示一个小错误通知
WBErrorNoticeView *notice = [WBErrorNoticeView errorNoticeInView:self.view title:@"Network Error" message:@"Check your network connection."];
[notice show];
如果提供的信息不适合一行,则通知将被扩大以容纳文本。
WBErrorNoticeView *notice = [WBErrorNoticeView errorNoticeInView:self.view title:@"Network Error" message:@"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."];
[notice show];
显示一个小成功通知
WBSuccessNoticeView *notice = [WBSuccessNoticeView successNoticeInView:self.view title:@"Link Saved Successfully"];
[notice show];
而不是在一个方法调用中堆积一大堆参数,我决定使用属性。这样,可以轻松添加新属性,而无需将 API 混乱地充满专用方法。
示例:使用一定透明度和在特定 Y 坐标位置自定义成功通知
WBSuccessNoticeView *notice = [WBSuccessNoticeView successNoticeInView:self.view title:@"Link Saved Successfully"];
notice.alpha = 0.8;
notice.originY = self.headerView.frame.size.height;
[notice show];
如果您传递了一个有效的 UIView 而不是 nil,将抛出一个 NSInvalidArgumentException 异常。
默认值如下
if (nil == title) title = @"Unknown Error";
if (nil == message) message = @"Information not provided.";
if (0.0 == duration) duration = 0.5;
if (0.0 == delay) delay = 2.0;
if (0.0 == alpha) alpha = 1.0;
if (origin < 0.0) origin = 0.0;
谁不喜欢统计数据? ;-) 下面是一些由 SLOCCount 报告的统计数据
SLOC Directory SLOC-by-Language (Sorted)
797 NoticeView objc=797
245 NoticeViewiPad objc=245
0 NoticeView.xcode proj (none)
0 top_dir (none)
Totals grouped by language (dominant language first):
objc: 1042 (100.00%)
Total Physical Source Lines of Code (SLOC) = 1,042
Development Effort Estimate, Person-Years (Person-Months) = 0.21 (2.51) (*)
Schedule Estimate, Years (Months) = 0.30 (3.54) (**)
Estimated Average Number of Developers (Effort/Schedule) = 0.71
Total Estimated Cost to Develop = $ 50,119 (***)
(*) Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05)
(**) Basic COCOMO model, Months = 2.5 * (person-months**0.38)
(***) Average salary = $100,000/year, overhead = 2.40
SLOCCount,版权(C)2001-2004 David A. Wheeler
http://www.dwheeler.com/sloccount/
最新薪资信息
http://www.indeed.com/salary/Software-Engineer.html
我很乐意包括您的贡献。请随意改进它,发送评论或建议。如果您有改进,请 发送我一个 pull request。
您可以在 Twitter 上联系我 —— @titusmagnus。