在我的应用程序中,我有一个UITextView
有许多行,但我需要具有正确外观的数据。
是否可以在UITextView
?
答案 0 :(得分:70)
我知道这是一个老问题,但现在我们有关于的新闻:
UITextView *textView = // init your text view
textView.textAlignment = NSTextAlignmentJustified;
就是这样!
更新:这仅适用于iOS 6及更高版本
答案 1 :(得分:12)
我找到了一个有效的解决方案。首先,您需要更改UITextView并使用UIWebView
代替。
<强> Details.h 强>
@interface Details : UIViewController {
IBOutlet UIWebView *descripcion;
}
@property (nonatomic, retain) UIWebView *descripcion;
然后,按如下方式加载UIWebView
:
<强> Details.m 强>
[descripcion loadHTMLString:[NSString stringWithFormat:@"<div align='justify'>%@<div>",YOUR_TEXT] baseURL:nil];
答案 2 :(得分:10)
有解决方案:
NSString *text1 = @"Sample text : A his is my weblog in English, German and Korean. If you want to know more about a pizza stone once it’s cooled down.";
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setAlignment: kCTJustifiedTextAlignment];
NSAttributedString * subText1 = [[NSAttributedString alloc] initWithString:text1 attributes:@{
NSParagraphStyleAttributeName : style
}];
_myUiTextView.attributedText = subText1;
答案 3 :(得分:7)
还有另一种选择。 CATextLayer
它明确支持合理的对齐。
而且它比UIWebView
重量轻且速度快。因为它基本上是CoreText
上的薄层,因此不需要像UIWebView
那样繁重的布局过程。
或者您可以使用另一个选项,直接使用较低级别的CoreText
框架。
无论如何,他们不支持文本编辑。如果您需要它,您必须自己实现它。
答案 4 :(得分:5)
对于从右到左的语言,如波斯语
UITextPosition *beginning = textview.beginningOfDocument;
UITextPosition *start = [textview positionFromPosition:beginning offset:0];
UITextPosition *end = [textview positionFromPosition:start offset:[textview.text length]];
UITextRange *textRange = [textview textRangeFromPosition:start toPosition:end];
[textview setBaseWritingDirection:UITextWritingDirectionRightToLeft forRange:textRange];
textview.textAlignment = NSTextAlignmentJustified;
答案 5 :(得分:3)
对于只有中心,左侧和右侧的文本,没有正确对齐的设置。如果你想要对齐的对齐,其中每一行都有相同数量的字符或类似的东西,你可以格式化输入的文字,以便在x个字符或单词之后有回车符。