ios UITextView设置行距

来源:互联网 发布:怎么找天使投资知乎 编辑:程序博客网 时间:2024/06/09 22:26

由于uitextview没有设置行距的方法,所以我们要在uitextview有变化的时候随时改变固定uitextview的行距,而且每当我们输入的是中文的时候,需要判断我们输入的是拼音还是中文再来改变行距,因此我们可以尝试下面的方法:

1、.h文件我们必须先加上 UITextViewDelegate的代理

2、.m文件我们就使用下面方法

- (void) viewDidLoad

{

    [superviewDidLoad];

     UITextView* tTextView = nil;

        tTextView = [[UITextView allocinit];

        tTextView.frame = CGRectMake(left, left, tView.width-left*2, tView.height-left*2);

        tTextView.backgroundColor = [UIColor clearColor];

        tTextView.delegate = self;

        

        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle allocinit];

        paragraphStyle.lineSpacing = 10;// 字体的行间距

        NSDictionary *attributes = @{

                                     NSFontAttributeName:[UIFont systemFontOfSize:15],

                                     NSParagraphStyleAttributeName:paragraphStyle

                                     };

        tTextView.attributedText = [[NSAttributedString allocinitWithString:@"内容" attributes:attributes];

        //        [tTextView setText:s_Default_FK];

        //        [tTextView setFont:[UIFont FontOfSize:14.f]];

        [tTextView setTextColor:[UIColor hexColor:@"aaaaaa"]];

        [tTextView setShowsHorizontalScrollIndicator:NO];

        [tTextView setShowsVerticalScrollIndicator:NO];

        [tView addSubview:tTextView];

        tTextView.returnKeyType = UIReturnKeyDone;

        //        [tTextView becomeFirstResponder];

        _tTextView = tTextView;


    [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(textFiledEditChanged:)

                                                name:@"UITextFieldTextDidChangeNotification"

                                              object:_tTextView];

}


-(void)viewWillDisappear:(BOOL)animated

{

    [superviewWillDisappear:YES];

    [[NSNotificationCenterdefaultCenter]removeObserver:self

                                                  name:@"UITextFieldTextDidChangeNotification"

                                                 object:_tTextView];

    

}


#define kMaxLength 20

-(void)textFiledEditChanged:(NSNotification *)obj{

    UITextField *textField = (UITextField *)obj.object;

    

    NSString *toBeString = textField.text;

    NSString *lang = [[UITextInputModecurrentInputMode] primaryLanguage];// 键盘输入模式

    if ([langisEqualToString:@"zh-Hans"]) {// 简体中文输入,包括简体拼音,健体五笔,简体手写

        UITextRange *selectedRange = [textFieldmarkedTextRange];

        //获取高亮部分

        UITextPosition *position = [textFieldpositionFromPosition:selectedRange.startoffset:0];

        // 没有高亮选择的字,则对已输入的文字进行字数统计和限制

        if (!position) {

            //    textview改变字体的行间距

            

            NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStylealloc] init];

            

            paragraphStyle.lineSpacing =10;// 字体的行间距

            

            

            NSDictionary *attributes =@{

                                         

                                         NSFontAttributeName:[UIFontsystemFontOfSize:14],// 字体的大小

                                         

                                         NSParagraphStyleAttributeName:paragraphStyle

                                         

                                         };

            

            _tTextView.attributedText = [[NSAttributedStringalloc] initWithString:_tTextView.textattributes:attributes];

        }

        // 有高亮选择的字符串,则暂不对文字进行统计和限制

        else{

            

        }

    }

    // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

    //    else{

    //        if (toBeString.length > kMaxLength) {

    //            textField.text = [toBeString substringToIndex:kMaxLength];

    //        }

    //    }

}

#pragma mark - -------- UITextViewDelegate ----------

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView

{

    if ([[textView.textdeleteSpace] isEqualToString:s_Default_FK]) {

        textView.text =@"";

        textView.textColor = [UIColorblackColor];

    }

    returnYES;

}


-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

{

    if ([textisEqualToString:@"\n"]) {

        [textView resignFirstResponder];

        if (k_Is_Empty(textView.text)) {

            [textView setText:s_Default_FK];

            [textView setTextColor:[UIColorlightGrayColor]];

        }

        returnNO;

    }

    returnYES;

}


@end

0 0
原创粉丝点击