美文网首页
UITextView自定义文字属性的方法和遇到的问题

UITextView自定义文字属性的方法和遇到的问题

作者: edison0428 | 来源:发表于2018-07-25 12:22 被阅读14次

UITextView中的使用中,我们一般都是自定义文字的大小,行距等属性

文字的属性有两种情况,一种是直接把文字加到UITextView上,一种是点击编辑,所以两种情况都要考虑

直接上代码

创建textview的时候

 _textView = [[UITextView alloc] init];
    _textView.backgroundColor=[UIColor clearColor]; //设置背景色
    _textView.scrollEnabled = YES;    //设置当文字超过视图的边框时是否允许滑动,默认为“YES”
    _textView.editable = YES;        //设置是否允许编辑内容,默认为“YES”
    _textView.delegate = self;       //设置代理方法的实现类
   // _textView.font=[UIFont systemFontOfSize:15];//[UIFont fontWithName:@"Arial" size:18.0]; //设置字体名字和字体大小;
    _textView.returnKeyType = UIReturnKeyDefault;//设置return键的类型
    _textView.keyboardType = UIKeyboardTypeDefault;//设置键盘类型一般为默认
    _textView.textAlignment = NSTextAlignmentLeft; //文本显示的位置默认为居左
    _textView.dataDetectorTypes = UIDataDetectorTypeAll; //显示数据类型的连接模式(如电话号码、网址、地址等)
    
    /*      设置属性       */
    NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
    
    paragraphStyle.lineSpacing = 10;// 字体的行间距
    
    NSDictionary *attributes = @{
                                 NSFontAttributeName:[UIFont systemFontOfSize:17],
                                 NSParagraphStyleAttributeName:paragraphStyle
                                 };
    _textView.typingAttributes = attributes;
    _textView.textColor = [UIColor blackColor];// 设置显示文字颜色
    /*      设置属性       */
    [self addSubview:_textView];

编辑textview的时候

- (void)textViewDidChange:(UITextView *)textView
{
    // 判断是否有候选字符,如果不为nil,代表有候选字符
    if(textView.markedTextRange == nil){
        //1 获取光标停留的位置
        NSUInteger loc = textView.selectedRange.location;
        
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        paragraphStyle.lineSpacing = 10; // 字体的行间距
        paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
        
        NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:17
                                                          ],
                                     NSParagraphStyleAttributeName:paragraphStyle
                                     };
        textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];
        
        //2 保证光标停留在上次的位置,解决了删除中间某个文字,光标移动最后的情况
        textView.selectedRange = NSMakeRange(loc, 0);
    }
}
bug
点击编码,删除UITextView中间的某个文字,光标会移动最后面,解决方式在textViewDidChange代理中已处理,两句话代码

相关文章

网友评论

      本文标题:UITextView自定义文字属性的方法和遇到的问题

      本文链接:https://www.haomeiwen.com/subject/garpmftx.html