在我的应用程序中,我需要在ui文本视图上设置一些行间距..
我知道我们可以使用段落样式间距
为不可编辑的文本视图/标签执行此操作但在我的应用程序中,当我输入文本时,它无效,
只有当我有一个预定义文本时,我才能做到这一点,如果一旦我清除文本段落麦粒肿将无法正常工作
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.minimumLineHeight = 35.f;
paragraphStyle.maximumLineHeight = 35.f;
UIFont *font = [UIFont fontWithName:@"AmericanTypewriter" size:18.f];
NSString *string = @"This is a test";
NSDictionary *attributtes = @{
NSParagraphStyleAttributeName : paragraphStyle,
};
deedTextView.font = font;
deedTextView.attributedText = [[NSAttributedString alloc] initWithString:string
attributes:attributtes];
但是,我没有任何预定义的文字,如NSString *string = @"This is a test";
文本视图必须为空,而开始
答案 0 :(得分:1)
想到一个简单的选项如下。
使用UITextViewDelegate
中的这两种方法之一,您可以实现您想要的目标:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
- (void)textViewDidChange:(UITextView *)textView;
您的算法如下 - 将textView.text
转换为您需要的样式,并将textView.text
设置为textView.attributedText
您也可以尝试设置:
deedTextView.typingAttributes = [NSDictionary dictionaryWithObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
答案 1 :(得分:1)
我遇到了同样的问题。根据Sergius的回答,我提出了以下工作解决方案。 Sergius回答的问题是所有其他已设置的属性都将被覆盖(字体,颜色......)
因此,最好编辑现有的typingAttributes:
NSDictionary* d = deedTextView.typingAttributes;
NSMutableDictionary* md = [NSMutableDictionary dictionaryWithDictionary:d];
[md setObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
deedTextView.typingAttributes= md;