iOS开发

YYText使用

2017-04-25  本文已影响7896人  YKDog
结构
 NSMutableAttributedString *text = [NSMutableAttributedString new];
  NSMutableAttributedString *one = [[NSMutableAttributedString alloc] initWithString:@"Another Link"];

  //设置字号
  one.font = [UIFont boldSystemFontOfSize:30];

  //设置字体颜色红色
  one.color = [UIColor redColor];


  //字体边框
  YYTextBorder *border = [YYTextBorder new];
  //边框圆角
  border.cornerRadius = 50;
  //边框边距
  border.insets = UIEdgeInsetsMake(0, -10, 0, -10);
  //边框线宽
  border.strokeWidth = 0.5;
  //边框颜色等于字体颜色
  border.strokeColor = one.color;
  border.lineStyle = YYTextLineStyleSingle;
  one.textBackgroundBorder = border;

  //高亮边框
   YYTextBorder *highlightBorder = border.copy;
   highlightBorder.strokeWidth = 0;
   highlightBorder.strokeColor = one.color;

  //填充颜色红色
   highlightBorder.fillColor = one.color;

  //设置高亮颜色
  YYTextHighlight *highlight = [YYTextHighlight new];
  [highlight setColor:[UIColor whiteColor]];

  //高亮的背景框
  [highlight setBackgroundBorder:highlightBorder];

  //点击高亮回调
  highlight.tapAction = ^(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect) {
              NSLog(@"高亮1");
          };
  [one setTextHighlight:highlight range:one.rangeOfAll];
  NSMutableAttributedString *text = [NSMutableAttributedString new];
      
      
      //设置文字
      NSArray *tags = @[@"◉red", @"◉orange"];
      
      for (int i = 0; i < tags.count; i++) {
          NSString *tag = tags[i];
          NSMutableAttributedString *tagText = [[NSMutableAttributedString alloc] initWithString:tag];
          
          //插入空格
          [tagText insertString:@"   " atIndex:0];
          [tagText appendString:@"   "];
          
          
          //文字颜色和字体
          tagText.font = [UIFont boldSystemFontOfSize:16];
          tagText.color = [UIColor whiteColor];
          
         
          
          //边框
          YYTextBorder *border = [YYTextBorder new];
          border.strokeWidth = 1.5;
          border.strokeColor = [UIColor redColor];
          border.fillColor = [UIColor greenColor];
          border.cornerRadius = 100;
          border.insets = UIEdgeInsetsMake(-2, -5.5, -2, -8);
          
          [tagText setTextBackgroundBorder:border range:[tagText.string rangeOfString:tag]];
          
          //设置绑定的效果是成为一个整体一起操作 否则删除是一个一个字母删除
           [tagText setTextBinding:[YYTextBinding bindingWithDeleteConfirm:NO] range:tagText.rangeOfAll];
          
          [text appendAttributedString:tagText];
      }
      
      
      
      
      //创建YYTextView
      YYTextView *textView = [YYTextView new];
      textView.attributedText = text;
      
      textView.size = self.view.size;
      textView.height -= 64;
      [self.view addSubview:textView];
     @interface YYTextExampleEmailBindingParser :NSObject <YYTextParser>
  @property (nonatomic, strong) NSRegularExpression *regex;
  @end

  @implementation YYTextExampleEmailBindingParser

    - (instancetype)init {
      self = [super init];
      NSString *pattern = @"[-_a-zA-Z0-9@\\.]+[ ,\\n]";
      self.regex = [[NSRegularExpression alloc]     initWithPattern:pattern options:kNilOptions error:nil];
      return self;
    }

  //协议方法
-   (BOOL)parseText:(NSMutableAttributedString *)text selectedRange:(NSRangePointer)range {


      __block BOOL changed = NO;

      NSLog(@"%@", text.string);

      [_regex enumerateMatchesInString:text.string options:NSMatchingWithoutAnchoringBounds range:text.rangeOfAll usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
    ​      
          if (!result) return;

          //根据结果来的 range
          //0-16
          NSRange range = result.range;
          
          NSLog(@"-----%@------", NSStringFromRange(range));
          
          if (range.location == NSNotFound || range.length < 1) return;
          if ([text attribute:YYTextBindingAttributeName atIndex:range.location effectiveRange:NULL]) return;
          
          NSRange bindlingRange = NSMakeRange(range.location, range.length - 1);
          
          YYTextBinding *binding = [YYTextBinding bindingWithDeleteConfirm:YES];
          [text setTextBinding:binding range:bindlingRange]; /// Text binding
          [text setColor:[UIColor colorWithRed:0.000 green:0.519 blue:1.000 alpha:1.000] range:bindlingRange];
          changed = YES;
      }];
      return changed;
    }
  @end
   one = [[NSMutableAttributedString alloc] initWithString:@"日本語で書いた作文です。"];
        one.font = [UIFont boldSystemFontOfSize:30];
        
        ruby = [YYTextRubyAnnotation new];
        ruby.textBefore = @"に";
        [one setTextRubyAnnotation:ruby range:[one.string rangeOfString:@"日"]];

上一篇下一篇

猜你喜欢

热点阅读