NoticeView 3.0.7

NoticeView 3.0.7

测试已测试
语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

未认领维护。



  • Tito Ciuro

一款类似于TweetBot的通知组件,适用于iOS。


Alt text

使用方法

  • 将WBNoticeView文件夹放入您的项目中
  • 将QuartzCore.framework添加到您的项目中

3.0版新功能:更简洁的API,更易定制和更多功能

首先请注意,在3.0版中,API已进行了更改。为了避免废弃和复杂化API,决定替换一些方法。由于NoticeView是一个非常小的库,因此影响应该是最小的,代码也易于适应。

为什么更改?在3.0版之前,由于通知类目前的结构,定制外观和感觉相当困难。这个版本简化了这项任务,提高了可访问性,并增强了触摸以取消操作的功能。

以下是3.0版中引入的更改简介

  • 将.podspec文件添加到仓库中。
  • 更新了WBNoticeView的内部结构,为通知设置可访问性标签和属性。这些更改使测试人员在执行功能测试(例如KIF https://github.com/square/KIF)时能够轻松定位通知视图。
  • 现在更容易自定义NoticeView。
  • 触摸取消操作行为更加灵活。可以在取消操作块中确定是否触摸交互式地取消通知,允许创建触摸可以响应或自动取消的通知。通知也可以在显示持续时间到期之前选择性地通过触摸取消。

鸣谢:感谢@blakewatters抽出时间重构、文档化和清理代码。

2.4版新功能:当通知被取消时指定一个完成块

从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版新功能:手动取消通知

从2.3.1版开始,任何具有'粘性'属性的通知都可以随时取消。例如,当检测到特定事件时,只需在准备好取消通知时在通知上调用'dismissNotice'即可。

[myNotice dismissNotice];

查看示例项目,了解其操作。

2.3版新功能:将任何通知设置为粘性

有些用户询问“粘性”是否可以是任何通知视图的属性。好了,我很高兴地报告,从2.3版本开始,所有通知类型都可以设置为粘性。使用方式遵循常规模式,只是这次我们将“粘性”属性相应地设置。

WBErrorNoticeView *notice = [WBErrorNoticeView errorNoticeInView:self.view title:@"Network Error" message:@"Check your network connection."];
notice.sticky = YES;
[notice show];

2.1新特性:粘性通知

2.1新增了一种不同类型的通知:粘性。正如其名所示,该通知将保持可见,直到用户点击以 dismiss 它。使用方式遵循错误和成功通知模式。

WBStickyNoticeView *notice = [WBStickyNoticeView stickyNoticeInView:self.view title:@"7 New Tweets."];
[notice show];

NotificationView 1.0 与 2.0

1.0版本的行为是“发射并遗忘”。调用 showErrorNoticeInViewshowSuccessNoticeInView 将显示通知,但却无法保留以备后用。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;

NoticeView SLOC统计信息

谁不喜欢统计数据? ;-) 下面是一些由 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