WSCoachMarksView 是一个 iOS 插件类,可以在现有 UI 上显示带有矩形剪影的用户说明标签。这种方法利用您的实际 UI 作为用户引导过程的一部分。只需定义一系列矩形(CGRect)及其相应的标题即可。
HitchedPic 应用中 WSCoachMarksView 实际操作演示视频。
WSCoachMarksView 在任何 iOS 版本上均可以工作,并使用 ARC 构建。它取决于以下 Apple 框架
或者,您可以直接将 WSCoachMarksView.h
和 WSCoachMarksView.m
源代码文件添加到您的项目。
WSCoachMarksView.h
和 WSCoachMarksView.m
到项目(当在项目外提取代码存档时,务必选择“复制项目”)。#import "WSCoachMarksView.h"
.在 viewDidLoad 方法中创建一个新的 WSCoachMarksView 实例,并传入一个包含说明标签定义的数组(每个说明标签包含一个 CGRect 和其标题)。
- (void)viewDidLoad {
[super viewDidLoad];
// ...
// Setup coach marks
NSArray *coachMarks = @[
@{
@"rect": [NSValue valueWithCGRect:(CGRect){{0,0},{45,45}}],
@"caption": @"Helpful navigation menu"
},
@{
@"rect": [NSValue valueWithCGRect:(CGRect){{10.0f,56.0f},{300.0f,56.0f}}],
@"caption": @"Document your wedding by taking photos"
},
@{
@"rect": [NSValue valueWithCGRect:(CGRect){{10.0f,119.0f},{300.0f,56.0f}}],
@"caption": @"Your wedding photo album"
},
@{
@"rect": [NSValue valueWithCGRect:(CGRect){{10.0f,182.0f},{300.0f,56.0f}}],
@"caption": @"View and manage your friends & family"
},
@{
@"rect": [NSValue valueWithCGRect:(CGRect){{10.0f,245.0f},{300.0f,56.0f}}],
@"caption": @"Invite friends to get more photos"
},
@{
@"rect": [NSValue valueWithCGRect:(CGRect){{0.0f,410.0f},{320.0f,50.0f}}],
@"caption": @"Keep your guests informed with your wedding details"
}
];
WSCoachMarksView *coachMarksView = [[WSCoachMarksView alloc] initWithFrame:self.view.bounds coachMarks:coachMarks];
[self.view addSubview:coachMarksView];
[coachMarksView start];
}
请确保将说明标签视图添加到最顶层的控制器。如果您有导航控制器,则使用
WSCoachMarksView *coachMarksView = [[WSCoachMarksView alloc] initWithFrame:self.navigationController.view.bounds coachMarks:coachMarks];
[self.navigationController.view addSubview:coachMarksView];
[coachMarksView start];
您可以在显示之前使用 start
方法配置 WSCoachMarksView。例如
coachMarksView.animationDuration = 0.5f;
coachMarksView.enableContinueLabel = NO;
[coachMarksView start];
仅向用户显示一次说明标签的示例(假定在 viewDidLoad
中创建了 coachMarksView
)
- (void)viewDidAppear:(BOOL)animated {
// Show coach marks
BOOL coachMarksShown = [[NSUserDefaults standardUserDefaults] boolForKey:@"WSCoachMarksShown"];
if (coachMarksShown == NO) {
// Don't show again
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"WSCoachMarksShown"];
[[NSUserDefaults standardUserDefaults] synchronize];
// Show coach marks
[coachMarksView start];
// Or show coach marks after a second delay
// [coachMarksView performSelector:@selector(start) withObject:nil afterDelay:1.0f];
}
}
coachMarks
(NSArray)修改说明标签。
lblCaption
(UILabel)访问字幕标签。
maskColor
(UIColor)蒙版的颜色(默认:0,0,0 alpha 0.9)。
animationDuration
(CGFloat)转换动画到下一个说明标签的持续时间(默认:0.3)。
cutoutRadius
(CGFloat)裁剪矩形半径(默认:2px)。
maxLblWidth
(CGFloat)将标题标签的最大宽度设置为230px。行数将根据标题内容自动计算。
lblSpacing
(CGFloat)定义标题标签在裁剪上方或下方的距离(默认:35px)。
enableContinueLabel
(BOOL)默认情况下,“点击继续”标签会弹出,以引导用户在第一个引导标记上(默认:YES)。
如果您需要在特定的引导标记进入视图时执行某个操作,您可以实施 WSCoachMarksViewDelegate。
@interface WSMainViewController : UIViewController <WSCoachMarksViewDelegate>
coachMarksView.delegate = self;
注意:所有方法都是可选的。仅实现所需的方法。
- (void)coachMarksView:(WSCoachMarksView*)coachMarksView willNavigateToIndex:(NSInteger)index
- (void)coachMarksView:(WSCoachMarksView*)coachMarksView didNavigateToIndex:(NSInteger)index
- (void)coachMarksViewWillCleanup:(WSCoachMarksView*)coachMarksView
- (void)coachMarksViewDidCleanup:(WSCoachMarksView*)coachMarksView
此代码根据 MIT 许可证的条款和条件进行分发。
版本 0.2 @ 4/13/13
版本 0.1 @ 4/1/13