最近看到iOS/Mac 開發者鐘穎 Cyan 和錘子科技關于是否抄襲的爭議,有感而發:這是iOS在分詞功能的實現。并沒有關于倆這進行談論。
如何實現拇指大爆炸的功能
1:使用3D Touch來展示內容,這部分簡單的說明:
1.1 是否有3D Touch功能
//方法里檢測手機是否有3D Touch功能
- (void)viewWillAppear:(BOOL)animated {
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {
//有3D Touch功能
[self registerForPreviewingWithDelegate:(id)self sourceView:self.view];
}else{
//沒有3D Touch功能
}
}
1.2 實現3D Touch的代理方法UIViewControllerPreviewingDelegate
pragma mark - 3D Touch Delegate
//點擊進入預覽模式: 實現該協議方法
- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location {
// check if we're not already displaying a preview controller
if ([self.presentedViewController isKindOfClass:[WJFTextVC class]]) {
return nil;
}
WJFTextVC *previewController = [WJFTextVC new];
previewController.view.backgroundColor = [UIColor blueColor];
previewController.textArray = self.words;
return previewController;
}
//繼續按壓進入:實現該協議
- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit {
WJFTextVC *previewController = [WJFTextVC new];
previewController.view.backgroundColor = [UIColor redColor];
previewController.textArray = self.words;
[self showViewController:previewController sender:self];
}
2 重點分詞功能的實現(采用系統自帶的api)
-(NSArray *)stringTokenizerWithWord:(NSString *)word{
NSMutableArray *keyWords = [NSMutableArray new];
CFStringTokenizerRef ref = CFStringTokenizerCreate(NULL, (__bridge CFStringRef)word, CFRangeMake(0, word.length),kCFStringTokenizerUnitWord,NULL);
CFRange range;
CFStringTokenizerAdvanceToNextToken(ref);
range=CFStringTokenizerGetCurrentTokenRange(ref);
NSString *keyWord;
while (range.length>0)
{
keyWord=[word substringWithRange:NSMakeRange(range.location, range.length)];
[keyWords addObject:keyWord];
CFStringTokenizerAdvanceToNextToken(ref);
range=CFStringTokenizerGetCurrentTokenRange(ref);
}
return keyWords;
}