24

在我的应用程序中,我有UITextView很多行,但我需要具有正确外观的数据。

是否有可能在 中进行合理对齐UITextView

4

6 回答 6

70

我知道这是一个老问题,但现在我们有关于:

UITextView *textView = // init your text view
textView.textAlignment = NSTextAlignmentJustified;

就是这样!

更新:这仅适用于 iOS 6 及更高版本

于 2012-11-02T22:21:49.660 回答
12

我找到了一个可行的解决方案。首先,您需要更改 UITextView 并使用 aUIWebView代替。

详细信息.h

@interface Details : UIViewController {
    IBOutlet UIWebView *descripcion;
}

@property (nonatomic, retain) UIWebView *descripcion;

UIWebView然后,按如下方式加载您的:

详情.m

[descripcion loadHTMLString:[NSString stringWithFormat:@"<div align='justify'>%@<div>",YOUR_TEXT] baseURL:nil];
于 2011-04-01T14:45:07.993 回答
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;
于 2012-11-26T14:08:31.417 回答
7

还有另一种选择。CATextLayer.

它明确支持合理对齐。而且它比UIWebView. 因为它本质上是一层薄薄的CoreText,所以不需要像UIWebView.

或者您可以使用另一个选项,直接使用较低级别的CoreText框架。

无论如何,它们不支持文本编辑。如果你需要它,你必须自己实现它。

于 2011-04-24T06:04:36.400 回答
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;
于 2014-07-21T06:40:51.073 回答
3

只有居中、左、右的文本没有对齐对齐的设置。如果您想要每行具有相同数量的字符或类似内容的合理对齐,您可以将输入的文本格式化为在 x 个字符或单词或类似内容之后有回车。

于 2009-08-19T17:55:56.387 回答