CRToast 开源项目安装与使用指南
还在为iOS应用中的通知弹窗而烦恼吗?想要一个既美观又功能强大的Toast(吐司)通知组件?CRToast正是你需要的解决方案!本文将为你提供从安装到高级使用的完整指南,助你快速掌握这个优秀的iOS通知库。
🚀 什么是CRToast?
CRToast是一个现代化的iOS Toast通知库,可以在状态栏(Status Bar)或导航栏(Navigation Bar)上方显示通知。它基于CWStatusBarNotification开发,提供了丰富的自定义选项和流畅的动画效果。
核心特性
- ✅ 多种通知类型:状态栏通知、导航栏通知、自定义高度通知
- ✅ 丰富的动画效果:线性、弹簧、重力三种动画类型
- ✅ 完全可定制:文本、颜色、字体、对齐方式等全方位定制
- ✅ 交互支持:支持点击、滑动等多种交互方式
- ✅ 自动旋转:完美支持设备方向变化
📦 安装方式
CocoaPods安装(推荐)
在Podfile中添加:
pod 'CRToast', '~> 0.0.9'
然后运行:
pod install
Carthage安装
在Cartfile中添加:
github "cruffenach/CRToast"
然后运行:
carthage update
手动安装
将CRToast项目或源文件直接添加到你的Xcode项目中。
🛠️ 环境要求
- iOS 7.0+
- ARC(自动引用计数)
- 支持iPhone和iPad
🎯 快速开始
基础使用示例
#import <CRToast/CRToast.h>
// 创建通知选项字典
NSDictionary *options = @{
kCRToastTextKey : @"欢迎使用CRToast!",
kCRToastTextAlignmentKey : @(NSTextAlignmentCenter),
kCRToastBackgroundColorKey : [UIColor systemBlueColor],
kCRToastAnimationInTypeKey : @(CRToastAnimationTypeSpring),
kCRToastAnimationOutTypeKey : @(CRToastAnimationTypeSpring),
kCRToastAnimationInDirectionKey : @(CRToastAnimationDirectionTop),
kCRToastAnimationOutDirectionKey : @(CRToastAnimationDirectionTop),
kCRToastTimeIntervalKey : @(3.0)
};
// 显示通知
[CRToastManager showNotificationWithOptions:options
completionBlock:^{
NSLog(@"通知显示完成");
}];
通知类型对比
| 类型 | 描述 | 适用场景 |
|---|---|---|
CRToastTypeStatusBar | 覆盖状态栏 | 简短的状态提示 |
CRToastTypeNavigationBar | 覆盖导航栏 | 需要更多空间的详细通知 |
CRToastTypeCustom | 自定义高度 | 特殊布局需求 |
🔧 详细配置指南
文本配置选项
NSDictionary *textOptions = @{
kCRToastTextKey : @"主标题文本",
kCRToastSubtitleTextKey : @"副标题文本",
kCRToastFontKey : [UIFont boldSystemFontOfSize:14],
kCRToastTextColorKey : [UIColor whiteColor],
kCRToastSubtitleFontKey : [UIFont systemFontOfSize:12],
kCRToastSubtitleTextColorKey : [UIColor lightGrayColor],
kCRToastTextAlignmentKey : @(NSTextAlignmentCenter),
kCRToastTextMaxNumberOfLinesKey : @2
};
动画配置详解
CRToast提供三种动画类型:
NSDictionary *animationOptions = @{
kCRToastAnimationInTypeKey : @(CRToastAnimationTypeSpring),
kCRToastAnimationOutTypeKey : @(CRToastAnimationTypeSpring),
kCRToastAnimationInDirectionKey : @(CRToastAnimationDirectionTop),
kCRToastAnimationOutDirectionKey : @(CRToastAnimationDirectionTop),
kCRToastAnimationSpringDampingKey : @(0.6),
kCRToastAnimationSpringInitialVelocityKey : @(0.1),
kCRToastTimeIntervalKey : @(3.0)
};
方向配置常量
| 方向常量 | 描述 |
|---|---|
CRToastAnimationDirectionTop | 从顶部进入/退出 |
CRToastAnimationDirectionBottom | 从底部进入/退出 |
CRToastAnimationDirectionLeft | 从左侧进入/退出 |
CRToastAnimationDirectionRight | 从右侧进入/退出 |
🖼️ 图像和图标配置
添加左侧图标
NSDictionary *imageOptions = @{
kCRToastImageKey : [UIImage imageNamed:@"success_icon"],
kCRToastImageAlignmentKey : @(CRToastAccessoryViewAlignmentLeft),
kCRToastImageContentModeKey : @(UIViewContentModeScaleAspectFit),
kCRToastImageTintKey : [UIColor whiteColor]
};
显示加载指示器
NSDictionary *activityOptions = @{
kCRToastShowActivityIndicatorKey : @YES,
kCRToastActivityIndicatorViewStyleKey : @(UIActivityIndicatorViewStyleWhite),
kCRToastActivityIndicatorAlignmentKey : @(CRToastAccessoryViewAlignmentLeft)
};
👆 交互处理
交互类型常量
// 轻击交互
CRToastInteractionTypeTapOnce // 单击
CRToastInteractionTypeTapTwice // 双击
CRToastInteractionTypeTwoFingerTapOnce // 双指单击
CRToastInteractionTypeTwoFingerTapTwice // 双指双击
// 滑动手势
CRToastInteractionTypeSwipeUp // 上滑
CRToastInteractionTypeSwipeLeft // 左滑
CRToastInteractionTypeSwipeDown // 下滑
CRToastInteractionTypeSwipeRight // 右滑
// 组合类型
CRToastInteractionTypeSwipe // 所有滑动手势
CRToastInteractionTypeTap // 所有点击手势
CRToastInteractionTypeAll // 所有交互类型
添加交互响应
CRToastInteractionResponder *tapResponder =
[CRToastInteractionResponder interactionResponderWithInteractionType:CRToastInteractionTypeTap
automaticallyDismiss:YES
block:^(CRToastInteractionType interactionType) {
NSLog(@"用户点击了通知,交互类型: %@", NSStringFromCRToastInteractionType(interactionType));
}];
NSDictionary *interactionOptions = @{
kCRToastInteractionRespondersKey : @[tapResponder]
};
⚙️ 高级配置
设置全局默认选项
NSDictionary *defaultOptions = @{
kCRToastBackgroundColorKey : [UIColor darkGrayColor],
kCRToastTextColorKey : [UIColor whiteColor],
kCRToastAnimationInTypeKey : @(CRToastAnimationTypeSpring),
kCRToastAnimationOutTypeKey : @(CRToastAnimationTypeSpring),
kCRToastTimeIntervalKey : @(2.5)
};
[CRToastManager setDefaultOptions:defaultOptions];
自定义视图配置
// 创建自定义背景视图
UIView *customBackgroundView = [[UIView alloc] init];
customBackgroundView.backgroundColor = [UIColor clearColor];
// 添加渐变层
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.colors = @[(id)[[UIColor blueColor] CGColor], (id)[[UIColor purpleColor] CGColor]];
gradient.frame = customBackgroundView.bounds;
[customBackgroundView.layer insertSublayer:gradient atIndex:0];
NSDictionary *customViewOptions = @{
kCRToastBackgroundViewKey : customBackgroundView
};
🎨 完整示例代码
成功提示通知
- (void)showSuccessNotificationWithMessage:(NSString *)message {
NSDictionary *options = @{
kCRToastTextKey : message,
kCRToastBackgroundColorKey : [UIColor systemGreenColor],
kCRToastImageKey : [UIImage imageNamed:@"checkmark"],
kCRToastImageTintKey : [UIColor whiteColor],
kCRToastAnimationInTypeKey : @(CRToastAnimationTypeSpring),
kCRToastAnimationOutTypeKey : @(CRToastAnimationTypeSpring),
kCRToastTimeIntervalKey : @(2.0),
kCRToastInteractionRespondersKey : @[[CRToastInteractionResponder interactionResponderWithInteractionType:CRToastInteractionTypeTap
automaticallyDismiss:YES
block:nil]]
};
[CRToastManager showNotificationWithOptions:options completionBlock:nil];
}
错误提示通知
- (void)showErrorNotificationWithMessage:(NSString *)message {
NSDictionary *options = @{
kCRToastTextKey : message,
kCRToastSubtitleTextKey : @"请稍后重试",
kCRToastBackgroundColorKey : [UIColor systemRedColor],
kCRToastImageKey : [UIImage imageNamed:@"error"],
kCRToastAnimationInTypeKey : @(CRToastAnimationTypeGravity),
kCRToastAnimationOutTypeKey : @(CRToastAnimationTypeGravity),
kCRToastTimeIntervalKey : @(4.0),
kCRToastForceUserInteractionKey : @YES // 需要用户交互才消失
};
[CRToastManager showNotificationWithOptions:options completionBlock:nil];
}
🔍 调试技巧
查看队列中的通知标识符
NSLog(@"当前队列中的通知: %@", [CRToastManager notificationIdentifiersInQueue]);
手动取消通知
// 取消当前显示的通知
[CRToastManager dismissNotification:YES];
// 取消所有队列中的通知
[CRToastManager dismissAllNotifications:YES];
📊 性能优化建议
- 复用配置对象:对于频繁使用的通知样式,创建并复用配置字典
- 合理设置动画参数:避免过于复杂的动画效果影响性能
- 及时清理:不再需要的通知及时从队列中移除
- 内存管理:注意循环引用,特别是在block中使用weak引用
🚨 常见问题解决
问题1:通知不显示
解决方案:检查是否正确导入头文件,确认iOS版本支持
问题2:动画效果异常
解决方案:调整动画参数,特别是弹簧阻尼和初始速度
问题3:交互无响应
解决方案:确认正确设置了交互响应器,检查自动取消设置
🎉 总结
CRToast是一个功能强大且高度可定制的iOS通知库,通过本文的详细指南,你应该能够:
- ✅ 正确安装和配置CRToast
- ✅ 创建各种类型的通知
- ✅ 自定义通知的外观和动画
- ✅ 处理用户交互
- ✅ 优化通知性能
现在就开始在你的iOS项目中集成CRToast,为用户提供更好的通知体验吧!
提示:在实际项目中,建议根据应用的整体设计风格统一配置通知样式,保持用户体验的一致性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



