您的位置:首页 > 产品设计 > UI/UE

ios UITextView设置行距

2016-04-29 11:55 447 查看
由于uitextview没有设置行距的方法,所以我们要在uitextview有变化的时候随时改变固定uitextview的行距,而且每当我们输入的是中文的时候,需要判断我们输入的是拼音还是中文再来改变行距,因此我们可以尝试下面的方法:
1、.h文件我们必须先加上 UITextViewDelegate的代理
2、.m文件我们就使用下面方法
- (void) viewDidLoad
{
[super
viewDidLoad];

UITextView* tTextView = nil;
tTextView = [[UITextView alloc] init];
tTextView.frame = CGRectMake(left, left, tView.width-left*2,
tView.height-left*2);
tTextView.backgroundColor = [UIColor clearColor];
tTextView.delegate = self;

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 10;// 字体的行间距
NSDictionary *attributes = @{
NSFontAttributeName:[UIFont systemFontOfSize:15],
NSParagraphStyleAttributeName:paragraphStyle
};
tTextView.attributedText = [[NSAttributedString alloc] initWithString:@"内容" 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;

[[NSNotificationCenter
defaultCenter]addObserver:self
selector:@selector(textFiledEditChanged:)

name:@"UITextFieldTextDidChangeNotification"

object:_tTextView];
}

-(void)viewWillDisappear:(BOOL)animated
{
[super
viewWillDisappear:YES];
[[NSNotificationCenter
defaultCenter]removeObserver:self

name:@"UITextFieldTextDidChangeNotification"

object:_tTextView];

}

#define kMaxLength 20
-(void)textFiledEditChanged:(NSNotification *)obj{
UITextField *textField = (UITextField *)obj.object;

NSString *toBeString = textField.text;
NSString *lang = [[UITextInputMode
currentInputMode] primaryLanguage];
// 键盘输入模式
if ([lang
isEqualToString:@"zh-Hans"]) {
// 简体中文输入,包括简体拼音,健体五笔,简体手写
UITextRange *selectedRange = [textField
markedTextRange];
//获取高亮部分
UITextPosition *position = [textField
positionFromPosition:selectedRange.start
offset:0];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if (!position) {
// textview
改变字体的行间距

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle
alloc] init];

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

NSDictionary *attributes =
@{

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

NSParagraphStyleAttributeName:paragraphStyle

};

_tTextView.attributedText = [[NSAttributedString
alloc] initWithString:_tTextView.text
attributes:attributes];
}
// 有高亮选择的字符串,则暂不对文字进行统计和限制
else{

}
}
// 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
// else{
// if (toBeString.length > kMaxLength) {
// textField.text = [toBeString substringToIndex:kMaxLength];
// }
// }
}

#pragma mark - -------- UITextViewDelegate ----------
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
if ([[textView.text
deleteSpace] isEqualToString:s_Default_FK]) {
textView.text =
@"";
textView.textColor = [UIColor
blackColor];
}
return
YES;
}

-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString
*)text
{
if ([text
isEqualToString:@"\n"]) {
[textView resignFirstResponder];
if (k_Is_Empty(textView.text)) {
[textView setText:s_Default_FK];
[textView setTextColor:[UIColor
lightGrayColor]];
}
return
NO;
}
return
YES;
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: